WPF Image. Кэширование ресурсов слишком агрессивно - PullRequest
9 голосов
/ 09 ноября 2010

У меня есть экземпляр System.Windows.Controls.Image, и я программно устанавливаю содержимое следующим образом:

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

Иногда я знаю, что изображение на сервере изменилось, и я хочу обновить его, но каждыйповторяя приведенный выше код, я получаю одно и то же изображение.

Кажется, это проблема кеширования, но два очевидных решения - RequestCacheLevel и BitmapCacheOption - похоже, ничего не делают.Этот код имеет тот же результат:

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

Единственный способ принудительного обновления, который я обнаружил, - это добавление одноразовой строки запроса в URI, которая, кажется, работает, но также является полным взломом:

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

Как можно предотвратить кэширование этих изображений и / или принудительно обновить?

1 Ответ

23 голосов
/ 09 ноября 2010

Я думаю, вам нужно установить CreateOptions для BitmapImage:

BitmapCreateOptions.IgnoreImageCache
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...