在我的 wpf 应用程序中,我的视图模型中的耗时操作是使用单独的线程调用的。但是,此函数访问视图模型中绑定到视图中的对象的多个属性。我尝试直接访问它们,并且没有看到关于它们归 UI 线程所有的抱怨。我有兴趣了解在线程之间直接使用它们的后果。
您可以从任何线程自由使用您的 ViewModel - 包括读取和写入。一个主要的例外是处理集合 - 数据绑定集合必须在用户界面线程上写入,因为绑定不会自动编组到 UI 线程(就像简单绑定那样)。
但是,您仍然应该考虑为任何写入进行适当的同步。正常的线程同步问题会发生,因为 ViewModel 只是另一个类。
话虽这么说,通常情况下,您会希望处理同步的方式与许多情况下略有不同。锁通常不适用于 ViewModel,因为 WPF 数据绑定不会锁定对象。因此,您通常应该使用Dispatcher.Invoke
/BeginInvoke
当 ViewModel 中需要同步时,根据需要封送对用户界面线程的回调。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)