Загрузка BitmapImage из URI в потоке пользовательского интерфейса приводит к зависанию приложения.Чтобы избежать этого, я пытаюсь загрузить BitmapImage в отдельном потоке, хотелось бы знать, можно ли сделать это простым с помощью TPL.
Мой текущий метод следующий:
Task.Factory.StartNew<BitmapImage>(() => new BitmapImage(myUri) { CacheOption = BitmapCacheOption.OnLoad }, CancellationToken.None, TaskCreationOptions.None, new StaTaskScheduler(1))
.ContinueWith(t => image1.Source = t.Result, TaskScheduler.FromCurrentSynchronizationContext());
Проблема с этим, конечно, в том, что BitmapImage не был создан в том же потоке, что и изображение.
Загруженный из URI BitmapImage не может быть заморожен, поэтому он не будет работать нормально.
В настоящее время самый простой способ, который я могу придумать, - это создать поток из URI, затем загрузить растровое изображение из этого потока и заморозить его перед возвратом.Это должно создать действительно вздутый код, я верю.
Есть ли способ сделать код маленьким (э) и (более) читаемым при попытке отобразить изображение из Интернета?