从单独的线程访问ViewModel属性

Aks*_*Aks 6 wpf mvvm

在我的wpf应用程序中,使用单独的线程调用viewmodel中的耗时操作.但是,此函数访问视图模型中绑定到视图中对象的多个属性.我尝试直接访问它们,我看不到有关它们归UI线程所有的投诉.我很想知道在线程之间直接使用它们的后果.

Ree*_*sey 5

您可以从任何线程中自由使用ViewModel - 包括读写.一个主要的例外是处理集合 - 必须在用户界面线程上写入数据绑定集合,因为绑定不会自动封送到UI线程(就像简单的绑定一样).

但是,您仍应考虑对任何写入进行适当的同步.由于ViewModel只是另一个类,因此会发生正常的线程同步问题.

话虽如此,通常情况下,您希望处理同步的方式与在许多情况下略有不同.锁通常不在ViewModel上工作,因为WPF数据绑定不会锁定对象.因此,在ViewModel中需要同步时,通常应使用Dispatcher.Invoke/ BeginInvoke来根据需要将调用封送回用户界面线程.