2011-04-21 84 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