Ho un'istanza di System.Windows.Controls.Image
, e impostare il contenuto di programmazione in quanto tale:WPF Image.Source caching in modo troppo aggressivo
Uri location = new Uri(uriString);
image.Source = new BitmapImage(location);
volte mi sa che l'immagine sul server è stato modificato e voglio aggiornarla , ma ogni volta che ripeto il codice precedente ottengo la stessa immagine.
Questo sembra essere un problema di memorizzazione nella cache, ma le due soluzioni ovvie - RequestCacheLevel
e BitmapCacheOption
- sembrano non fare nulla. Questo codice ha lo stesso risultato:
var cachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore)) {
CacheOption = BitmapCacheOption.None
};
image.Source = new BitmapImage(location, cachePolicy);
// Still uses the cached version.
L'unico modo che ho trovato per forzare un aggiornamento è quello di aggiungere una stringa di query usa e getta per l'URI, che sembra funzionare, ma è anche un hack completo:
Uri location = new Uri(uriString + "?nonsense=" + new Random().Next());
image.Source = new BitmapImage(location);
// This forces a refresh
Come posso impedire che queste immagini vengano memorizzate nella cache e/o forzare un aggiornamento?
Sì, questo lo risolve! Ugh, perché ci sono così tante opzioni di cache? –
Mi ha salvato un sacco di lavoro per scoprirlo da solo. Grazie mille :) –
questo ha risolto il problema della mia ragazza. Grazie! :) – Musikero31