mam instancję System.Windows.Controls.Image
i ustawić zawartość programowo jako takie:WPF Image.Source buforowanie zbyt agresywnie
Uri location = new Uri(uriString);
image.Source = new BitmapImage(location);
Czasami wiem, że obraz na serwerze uległ zmianie i chcę go odświeżyć , ale za każdym razem, gdy powtarzam powyższy kod, otrzymuję ten sam obraz.
To wydaje się być problemem z buforowaniem, ale dwa oczywiste rozwiązania - RequestCacheLevel
i BitmapCacheOption
- wydają się nie robić nic. Kod ten ma ten sam wynik:
var cachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore)) {
CacheOption = BitmapCacheOption.None
};
image.Source = new BitmapImage(location, cachePolicy);
// Still uses the cached version.
Jedynym sposobem znalazłem się wymusić odświeżenie ma dołączyć wyrzucenie ciąg kwerendy do URI, który wydaje się działać, ale również jest kompletnym Hack:
Uri location = new Uri(uriString + "?nonsense=" + new Random().Next());
image.Source = new BitmapImage(location);
// This forces a refresh
Jak mogę zapobiec buforowaniu tych obrazów i/lub wymuszam odświeżanie?
Tak, to rozwiązuje go! Ugh, dlaczego jest tak wiele opcji buforowania? –
Zaoszczędziłem wiele pracy, sam się o tym przekonałem. Wielkie dzięki :) –
to rozwiązało problem mojej dziewczyny. dzięki! :) – Musikero31