Вы можете свободно использовать свою ViewModel из любого потока, включая чтение и запись.Единственное основное исключение касается работы с коллекциями - коллекции, связанные с данными, должны быть записаны в потоке пользовательского интерфейса, поскольку привязка не выполняется автоматически в потоке пользовательского интерфейса (как это делают простые привязки).
Однако вывсе же следует рассмотреть вопрос о наличии надлежащей синхронизации для любых записей.Возникнут обычные проблемы с синхронизацией потоков, поскольку ViewModel - это просто еще один класс.
При этом, как правило, вы захотите обрабатывать синхронизацию немного иначе, чем во многих случаях.Блокировки обычно не работают в ViewModel, поскольку привязка данных WPF не блокирует объекты.Поэтому обычно следует использовать Dispatcher.Invoke
/ BeginInvoke
для перенаправления вызовов обратно в поток пользовательского интерфейса, когда это необходимо, когда требуется синхронизация во ViewModel.