WPF Image.Source caching too aggressively
I have an instance of System.Windows.Controls.Image
, and I set the contents programmatically as such:
Uri location = new Uri(uriString);
image.Source = new BitmapImage(location);
Sometimes I know that the image on the server has changed and I want to refresh it, but every time I repeat the above code I get the same image.
This seems to be a caching problem, but the two obvious solutions — RequestCacheLevel
and BitmapCacheOption
— seem to do nothing. This cod开发者_C百科e has the same result:
var cachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore)) {
CacheOption = BitmapCacheOption.None
};
image.Source = new BitmapImage(location, cachePolicy);
// Still uses the cached version.
The only way I've found to force a refresh is to append a throwaway query string to the URI, which seems to work, but also is a complete hack:
Uri location = new Uri(uriString + "?nonsense=" + new Random().Next());
image.Source = new BitmapImage(location);
// This forces a refresh
How can I prevent these images from being cached, and/or force a refresh?
I think you need to set the CreateOptions on the BitmapImage to:
BitmapCreateOptions.IgnoreImageCache
精彩评论