【问题标题】:C# WinForms Clear http images from cacheC# WinForms 从缓存中清除 http 图像
【发布时间】:2016-08-14 23:17:24
【问题描述】:

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

【问题讨论】:

  • @rene 我不希望它自动更改,如果您愿意,我会得到一个类别列表,每个类别都有一个按钮,当您按下类别时,它会加载分配给该类别的图像来自服务器的类别,您可以从该应用程序手动更新图像,而当您单击更改其照片的类别按钮时,它会显示旧照片,即使您重新启动应用程序,它也会获取新照片5分钟左右后......

标签: c# winforms


【解决方案1】:

PictureBox 类使用WebClient 实例从服务器加载图像,正如您在 Microsoft 始终有用的源参考中所见。

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

如果WebClient.CachePolicy 属性未显式设置(在 PictureBox.Load 中未完成),则使用 WebRequest.DefaultCachePolicy

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

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

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

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

希望这对您有所帮助。

【讨论】:

  • 感谢您路过,从 Internet Explorer 清除缓存并没有为 PictureBox 清除它,所以我更改了 DefaultCachePolicy,因为图像是应用程序中唯一使用的 http 请求。谢谢。
猜你喜欢
  • 1970-01-01
  • 2013-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-22
  • 1970-01-01
  • 2016-06-25
相关资源
最近更新 更多