2010-11-09 9 views
9

que tiene una instancia de System.Windows.Controls.Image, y fije los contenidos de programación, tales como:WPF Image.Source almacenamiento en caché de forma demasiado agresiva

Uri location = new Uri(uriString); 
image.Source = new BitmapImage(location); 

veces sé que la imagen en el servidor ha cambiado y quiero actualizarlo , pero cada vez que repito el código anterior, obtengo la misma imagen.

Esto parece ser un problema de almacenamiento en caché, pero las dos soluciones obvias - RequestCacheLevel y BitmapCacheOption - parecen no hacer nada. Este código tiene el mismo resultado:

var cachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore)) { 
    CacheOption = BitmapCacheOption.None 
}; 
image.Source = new BitmapImage(location, cachePolicy); 
// Still uses the cached version. 

La única manera que he encontrado para forzar una actualización es añadir una cadena de consulta de usar y tirar a la URI, que parece funcionar, pero también es un corte completo:

Uri location = new Uri(uriString + "?nonsense=" + new Random().Next()); 
image.Source = new BitmapImage(location); 
// This forces a refresh 

¿Cómo puedo evitar que estas imágenes se almacenen en caché y/o forzar una actualización?

Respuesta

23

creo que es necesario establecer las CreateOptions en la BitmapImage a:

BitmapCreateOptions.IgnoreImageCache 
+3

Sí, esto lo resuelve! Uf, ¿por qué hay tantas opciones de almacenamiento en caché? –

+1

Me ahorró mucho trabajo descubrirlo por mí mismo. Muchas gracias :) –

+1

esto resolvió el problema de mi novia. ¡Gracias! :) – Musikero31

Cuestiones relacionadas