Я пытаюсь сделать загрузку изображений в разных потоках, но изображение никогда не обновляется.Использование Task.Factory в классе изображений
public class MyImage : System.Windows.Controls.Image
{
public MyImage()
{
this.Loaded += new RoutedEventHandler(MyImage_Loaded);
}
void MyImage_Loaded(object sender, RoutedEventArgs e)
{
//[email protected]"c:\test.jpg";
var t = Task<ImageSource>.Factory.StartNew(() => GetImage(mypath));
Source = t.Result;
}
следующие работы, но это поток пользовательского интерфейса:
Source = GetImage(mypath);
Я попробовал то же самое с BackgroundWorker, но результат тот же. Возможно ли это сделать без MVVM?
Почему вы используете задачу, если просто заблокируете основной поток, вызвав свойство Result? –
Что не работает? Есть ли исключение, ничего не происходит, что? Что такое «mypath»? –
@PeterRitchie mypath - путь к изображению. Не исключение. Если я попробую var t1 = Задача .Factory.StartNew (() => GetImage (mypath)) .ContinueWith (antecendent => { Источник = antecendent.Result; }); Я получаю «Исключение типа« System.InvalidOperationException »произошло в WindowsBase.dll, но не обрабатывалось в коде пользователя. Дополнительная информация: вызывающий поток не может получить доступ к этому объекту, потому что ему принадлежит другой поток». –
Daniel