Правильно, придерживаясь фокуса MVVM на минуту, существует небольшое количество сценариев, где может происходить многопоточность:
Как обычно, для простоты у нас есть класс Model, класс ViewModel и класс View.Модель имеет коллекцию и строковое свойство.
1) Пользователь запускает длительную фоновую задачу.Просмотр триггеров ViewModel.Может легко управляться с помощью ViewModel, например, с помощью BackgroundWorker
2) Обновление потоков в модели, ViewModel, уведомляемая моделью об изменениях.
Ранее мы уже обсуждали использование INotifyChanged для уведомления об изменениях из модели в ViewModel.Система DependencyProperty, по-видимому, направляет их в нужный вам поток.
Для ObservableCollections это не работает.Следовательно, должно ли публичное лицо моей модели быть однопоточным (Не нравится, почему Модель должна знать о потоках), или я должен реплицировать некоторые части Модели (например, коллекцию выше) в ViewModel, чтобы гарантировать внесение изменений вправильная тема?
Я думаю, что вроде как ответил на свой вопрос.Возможно нет.Моя модель знает о потоках, так что, возможно, было бы вежливым возвращать их назад, используя идею IMarshalInvoker, предложенную ранее Колином?
Некоторые из моих проблем здесь заключаются в том, что я считаю MVVM еще одним вариантом MVC, и историческиЯ был счастлив использовать термины типа MVP, MP, MVC практически взаимозаменяемо, потому что я знал, что работает с технологией графического интерфейса (обычно winforms) на V-конце.Когда я говорю MVVM, я специально ищу практические советы о том, что работает для конкретных недостатков WPF и WPF.Я надеюсь, что это объясняет природу моих вопросов и почему я их задаю.