Multithreading Silverlight多线程;需要同步吗?

Multithreading Silverlight多线程;需要同步吗?,multithreading,silverlight-4.0,mvvm,c#-4.0,Multithreading,Silverlight 4.0,Mvvm,C# 4.0,我有一个Silverlight应用程序,我在其中实现了M-V-VM模式,因此我的实际UI元素(视图)与数据(模型)分离。无论如何,在用户完成一些选择和可能的其他输入后的某个时刻,我希望异步浏览模型并扫描它,并编译用户已更改的选项列表(不同于默认选项),并最终在UI上作为摘要更新,但这将是最后一步 我的问题是,如果我使用后台工作程序来执行此操作,直到我真正想要进行UI更新,我只想读取其中一个模型中的当前值,我不必同步对该模型的访问,对吗?我不是修改数据,只是读取当前值… 有列表(Observabl

我有一个Silverlight应用程序,我在其中实现了M-V-VM模式,因此我的实际UI元素(视图)与数据(模型)分离。无论如何,在用户完成一些选择和可能的其他输入后的某个时刻,我希望异步浏览模型并扫描它,并编译用户已更改的选项列表(不同于默认选项),并最终在UI上作为摘要更新,但这将是最后一步

我的问题是,如果我使用后台工作程序来执行此操作,直到我真正想要进行UI更新,我只想读取其中一个模型中的当前值,我不必同步对该模型的访问,对吗?我不是修改数据,只是读取当前值…

有列表(ObservableCollections),所以我必须调用这些集合的方法,比如“\u ABCCollection.GetSelectedItems()”,但我只是在阅读,没有做任何更改。由于它们不是原语,我是否必须同步对它们的访问以进行读取,或者这无关紧要

我假设我必须同步我的最后一步,因为这将导致触发PropertyChanged事件,最终视图将通过绑定请求新数据


提前感谢您提供的所有建议。

您是对的。您可以读取工作线程上的模型对象和可观察集合,而不会发生跨线程冲突。必须在UI线程(更具体地说,是创建DispatcherObject子类实例的线程)上获取或设置UI元素(更具体地说,是从DispatcherObject派生的对象)上的属性值。有关详细信息,请参阅。

谢谢。关于多线程,这一直是我感到困惑的地方。