Это работает очень хорошо для меня ....

множество вопросов по этому поводу уже на этом сайте и на других форумах, но мне еще предстоит найти решение, которое действительно работает.

Вот что я хочу сделать:

В моем приложении WPF я хочу загрузить изображение.Изображение с произвольного URI в сети.Изображение может быть в любом формате.Если я загружаю одно и то же изображение более одного раза, я хочу использовать стандартный интернет-кеш Windows.Загрузка и декодирование изображений должно происходить синхронно, но не в потоке пользовательского интерфейса.В конце концов я должен получить что-то, что можно применить к свойству источника <Image>.

Вещи, которые я пробовал:

Использование WebClient.OpenRead () на BackgroundWorker. Работает нормально, но не использует кеш. WebClient.CachePolicy влияет только на этот конкретный экземпляр WebClient.Использование WebRequest на Backgroundworker вместо WebClient и настройка WebRequest.DefaultCachePolicy. Это правильно использует кэш, но я не видел пример, который бы не давал мне искаженные изображения в половине случаев.Создание BitmapImage в BackgroundWorker, установка BitmapImage.UriSource и попытка обработать BitmapImage.DownloadCompleted. Кажется, для этого используется кеш, если установлен BitmapImage.CacheOption, но, похоже, нет никакой возможности обработать DownloadCompleted, поскольку BackgroundWorker немедленно возвращается.

Я боролся с этим время от времени буквально месяцы и начинаю думать, что это невозможно, но вы, вероятно, умнее меня. Как вы думаете?

Ответы на вопрос(2)

Ваш ответ на вопрос