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?
Sí, esto lo resuelve! Uf, ¿por qué hay tantas opciones de almacenamiento en caché? –
Me ahorró mucho trabajo descubrirlo por mí mismo. Muchas gracias :) –
esto resolvió el problema de mi novia. ¡Gracias! :) – Musikero31