我有一个System.Windows.Controls.Image
的实例,我以编程方式设置内容:
Uri location = new Uri(uriString);
image.Source = new BitmapImage(location);
有时候我知道服务器上的图像已经改变了,我想刷新它,但每次重复上面的代码我都会得到相同的图像。
这似乎是一个缓存问题,但两个明显的解决方案 - RequestCacheLevel
和BitmapCacheOption
- 似乎什么都不做。此代码具有相同的结果:
var cachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore)) {
CacheOption = BitmapCacheOption.None
};
image.Source = new BitmapImage(location, cachePolicy);
// Still uses the cached version.
我发现强制刷新的唯一方法是将一个一次性查询字符串附加到URI,这似乎有用,但也是一个完整的黑客攻击:
Uri location = new Uri(uriString + "?nonsense=" + new Random().Next());
image.Source = new BitmapImage(location);
// This forces a refresh
如何阻止缓存这些图像和/或强制刷新?
答案 0 :(得分:23)
我认为您需要将BitmapImage上的CreateOptions设置为:
BitmapCreateOptions.IgnoreImageCache