WPF-Bild.Quelle caching zu aggressiv

Habe ich eine Instanz von System.Windows.Controls.Image, und ich den Inhalt programmgesteuert als solche:

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

Manchmal weiß ich, dass das Bild auf dem server geändert hat, und ich möchte, um es zu aktualisieren, aber jedes mal, wenn ich wiederholen Sie den oben aufgeführten code bekomme ich das gleiche Bild.

Dies scheint ein caching-problem, aber die zwei offensichtlichen Lösungen RequestCacheLevel und BitmapCacheOption — scheinen, nichts zu tun. Dieser code hat das gleiche Ergebnis:

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

Die einzige Möglichkeit, die ich gefunden habe, um eine Aktualisierung erzwingen, ist zum Anhängen einer Wegwerf-query-string an die URI, die zu funktionieren scheint, sondern auch ist ein kompletter hack:

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

Wie kann ich verhindern, dass diese Bilder zwischengespeichert werden, und/oder eine Aktualisierung erzwingen?

InformationsquelleAutor Hank | 2010-11-09
Schreibe einen Kommentar