Как обновить ObservableCollection изнутри BackgroundWorker с помощью MVVM?

вот уже два дня пытаюсь решить следующую проблему: У меня есть элемент управления WPF, в котором WrapPanel привязан к ObservableCollection. Действие изменяет содержимое ObservableCollection. Контент загружается в BackgroundWorker. Сразу после действия, вызвавшего изменение содержимого, необходимо новое содержимое в цикле foreach. Проблема в том, что загрузка содержимого происходит медленно, поэтому для его подготовки требуется немного времени.

Моя первая попытка заключалась в том, чтобы дождаться выполнения backgroundworker, пока для свойства IsBusy не будет установлено значение false. Но свойство IsBusy никогда не менялось во время ожидания! Вторая попытка заключалась в том, чтобы попытаться манипулировать ObservableCollection непосредственно из BackgroundWorker. Конечно, безуспешно, потому что ObservableCollection находится в другом потоке, чем BackgroundWorker.

Я действительно много читал о том, как манипулировать контентом в межпотоковом режиме. Но ни один из них не работал. Пробовал решения с помощью Dispatcher, "ThreadSafeObservableCollection", .....

Кто-нибудь может сказать мне, как я могу решить эту проблему? Есть ли простой способ редактировать содержимое потока пользовательского интерфейса в другом потоке? Или как мне правильно дождаться завершения работы BackgroundWorker?

EDIT: Но как мне дождаться завершения работы BackgroundWorker ???

5
задан Kai 21 January 2011 в 14:31
поделиться