На этом сайте и на других форумах уже есть множество вопросов по этому поводу, но я еще не нашел решения это действительно работает.
Вот что я хочу сделать:
- В моем приложении WPF я хочу загрузить изображение.
- Изображение взято из произвольного URI в Интернете.
- Изображение может быть в любом формате.
- Если я загружаю одно и то же изображение более одного раза, я хочу использовать стандартный интернет-кеш Windows.
- Загрузка и декодирование изображений должны происходить синхронно, но не в потоке пользовательского интерфейса.
- В конце концов у меня должно получиться кое-что, что я могу применить к свойству источника .
Что я пробовал:
- Использование WebClient.OpenRead () в BackgroundWorker. Работает нормально, но не использует кеш. WebClient.CachePolicy влияет только на этот конкретный экземпляр WebClient.
- Использование WebRequest в Backgroundworker вместо WebClient и установка WebRequest.DefaultCachePolicy. Это правильно использует кеш, но я не видел примера, который бы не выдавал мне искаженные изображения в половине случаев.
- Создание BitmapImage в BackgroundWorker, установка BitmapImage.UriSource и попытка обработки BitmapImage.DownloadCompleted. Кажется, что это использует кеш, если установлен BitmapImage.CacheOption, но, похоже, нет возможности обработать DownloadCompleted, поскольку BackgroundWorker немедленно возвращается.
Я боролся с этим постоянно в течение нескольких месяцев и начинаю думать, что это невозможно, но ты, наверное, умнее меня. Как вы думаете?
задан Josh Santangelo 25 March 2011 в 23:09
поделиться