UI スレッドの URI から BitmapImage をダウンロードすると、アプリケーションがハングアップします。これを避けるために、別のスレッドで 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 が Image と同じスレッドで作成されていないという事実です。
URI から読み込まれた BitmapImage は凍結できないため、正常に動作しません。
現在、私が考えることができる最も簡単な方法は、URI からストリームを作成し、そのストリームからビットマップをロードして、返す前にフリーズすることです。それは私が信じている本当に肥大化したコードを作成するはずです。
Web から画像を表示しようとしているときに、コードを小さく (より) 読みやすくする方法はありますか?