C#WinForms清除缓存中的http图像

时间:2016-08-14 14:07:03

标签: c# winforms

我在图片框中遇到这个问题,它必须从网上加载类别的图像,问题是当服务器上的图像被更改时,它仍然会加载缓存的副本。

1 个答案:

答案 0 :(得分:2)

PictureBox类使用WebClient实例从服务器加载图像,如Microsoft的always usefule源参考中所示。

http://referencesource.microsoft.com/#System.Windows.Forms/winforms/Managed/System/WinForms/PictureBox.cs,d1a979fa214db76f

如果没有显式设置WebClient.CachePolicy属性(在PictureBox.Load中没有这样做),则使用WebRequest.DefaultCachePolicy

因此,根据您的应用程序,您可以选择以下方法之一:

  • 在设置PictureBox.ImageLocation之前清除此网址的缓存。这在How to clear the cache of HttpWebRequest
  • 中有解释
  • 使用您自己的WebClient实例使用set CachePolicy下载图像,并从下载的内容流中初始化PictureBox,如Load Picturebox Image From Memory?

  • 全局更改WebRequest.DefaultCachePolicy(作为最后手段),例如

    WebRequest.DefaultCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);

希望这有用。