Я собираю данные в отдельной Задаче, и я хочу, чтобы данные связывали результат с компонентом GUI, используя ObservableCollection<>
. Мой код выглядит примерно так:
private ObservableCollection<MyItem> _items;
public ObservableCollection<MyItem> Items
{
get { return _items; }
set
{
if (_items.Equals(value))
{
return;
}
_items = value;
RaisePropertyChanged("Items");
}
}
private void LoadData()
{
Task task = Task.Factory.StartNew(() =>
{
ObservableCollection<MyItem> itms = _htmlParser.FetchData(...);
Dispatcher.CurrentDispatcher.Invoke((Action)delegate
{
Items = itms;
});
});
}
Данные извлекаются из компонента, выполняющего некоторые HTTP-запросы. Я получаю ошибку:
Must create DependencySource on same Thread as the DependencyObject.
Я использую среду инструментария MVVM Light. Я также попытался отправить результат в виде сообщения, но в результате получилось то же сообщение об ошибке. Любые идеи или указатели?
РЕДАКТИРОВАТЬ: Вот проблема:
public class MyItem
{
public string Id { get; set; }
public string Name { get; set; }
public BitmapImage Image { get; set; } // <--- A big No No because it inherits from the DependencyObject
public Uri Uri { get; set; }
}
Я изменил BitmapImage
на тип данных byte[]
.