Как обрабатывать ObservableCollection <> результат параллельной задачи в MVVM?

Я собираю данные в отдельной Задаче, и я хочу, чтобы данные связывали результат с компонентом 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-запросов. Я получаю ошибку:
Необходимо создать DependencySource в том же потоке, что и объект 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 на байт [] тип данных.

6
задан H.B. 31 August 2011 в 21:07
поделиться