WPF MVVM обновляет модель представления на фоновом работнике

Допустимо ли это senerio?

У меня есть представление для поддержки элемента.

У меня есть модель представления, которая предоставляет объект элемента (реализует INotifyPropertyChanged) как свойство, для которого установлено представление

Могу ли я передать объект Item в Backgroundworker, где он будет изменен, а затем вызвать событие PropertyChanged по завершении BackgroundWorking?

Или BackgroundWorker никоим образом не должен изменять объект Item. Я бы обновил существующий объект Item, используя результаты, возвращенные BackgroundWorker. Это будет сделано в событии RunWorkerCompleted. Но блокирует ли это поток пользовательского интерфейса и уничтожает ли объект наличия фонового рабочего?

Запутался?

Я попытаюсь объяснить.

Пользователь выбирает вариант для создания элемента. Я создаю модель просмотра и просмотра. В модели View создается пустой объект Item. Ему дается Вид на поддержание Предмета. При выборе свойства «Тип элемента» запускается сложный процесс создания списка полномочий, который должен ввести пользователь. Я мог бы заблокировать поток пользовательского интерфейса на время создания списка, но это ухудшает работу пользователя. Я хочу передать обработку фоновому потоку, сохранив при этом пользовательский интерфейс. В настоящее время я установил флаг, чтобы указать, что раздел в представлении загружается, передать объект Item в BackgroundWorker, который обновляет наблюдаемую коллекцию свойств. Когда BackgroundWorking завершается, я вызываю событие PropertyChanged, которое обновляет раздел представления, привязанный к списку, и выключаю флаг, чтобы указать, что раздел загружается. Кажется, это работает без проблем. Но у меня есть интуиция, что мне не следует обновлять связанные объекты из модели представления в фоновом потоке.

Спасибо Тим

7
задан Tim 4 March 2011 в 16:06
поделиться