2011-04-21 86 views
0

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

我的问题是,如果我使用后台工作来做到这一点,直到我真的想做UI更新,我只想在我的一个模型中读取当前值,我不必同步访问模型的权利?我不修改数据只是读取当前值...

有列表(ObservableCollections),所以我将不得不调用像“_ABCCollection.GetSelectedItems()”这些集合的方法,但我只是阅读,我没有做出改变。由于它们不是原始的,我是否必须为读取同步对它们的访问,或者这没关系?

我想我得sychronize我的最后一步,因为它会造成的PropertyChanged事件,火灾,最终意见将通过绑定请求新的数据...

预先感谢任何及所有意见。

回答

0

你是对的。您可以在工作线程中读取模型对象和ObservableCollections,而不会出现跨线程违例。获取或设置UI元素(更具体地说,派生自DispatcherObject的对象)的属性值必须在UI线程(更具体地说,创建DispatcherObject子类实例的线程)上完成。有关详细信息,请参阅here

+0

谢谢。在多线程方面,这一直是我的一个混淆领域。 – user418754 2011-04-21 18:34:23