Carregando uma imagem em um thread de plano de fundo no WPF

Há várias perguntas sobre isso já neste site e em outros fóruns, mas ainda não encontrei uma solução que realmente funcion

Aqui está o que eu quero fazer:

No meu aplicativo WPF, quero carregar uma imagem.A imagem é de um URI arbitrário na Web. A imagem pode estar em qualquer formatSe eu carregar a mesma imagem mais de uma vez, quero usar o cache padrão da Internet no Window O carregamento e decodificação da imagem deve ocorrer de forma síncrona, mas não no thread da interface do usuári No final, devo terminar com algo que possa ser aplicado à propriedade de origem da <Image>.

oisas que eu tentei:

Usando WebClient.OpenRead () em um BackgroundWorker. Funciona bem, mas não usa o cache. WebClient.CachePolicy afeta apenas essa instância específica do WebClient.Usando WebRequest no Backgroundworker em vez de WebClient e definindo WebRequest.DefaultCachePolicy. Isso usa o cache corretamente, mas não vi um exemplo que não me dê imagens com aparência corrompida na metade do tempCriar uma BitmapImage em um BackgroundWorker, definindo BitmapImage.UriSource e tentando lidar com BitmapImage.DownloadCompleted. Isso parece usar o cache se BitmapImage.CacheOption estiver definido, mas parece que não há como lidar com DownloadCompleted, pois o BackgroundWorker retorna imediatamente.

Venho lutando com isso há meses e estou começando a achar impossível, mas você provavelmente é mais esperto do que eu. O que você acha

questionAnswers(2)

yourAnswerToTheQuestion