2011-10-18 94 views
1

我有一個應用程序有一個主要的用戶界面和兩個無模式窗口運行在他們自己的單獨線程。將對象從線程傳遞到線程時,我只是在輔助線程的主線程上創建對象的副本。 當我想更新對象本身,並通過代碼和輔助線程更改永久化,我該如何做到這一點?輔助線程始終保留舊對象的副本,並且永遠不會更新,除非線程被殺死或停止,然後再次產生。多線程c#應用程序

+9

你爲什麼要複製對象?從多個線程引用同一對象並使用併發語義來確保對該對象的任何更改都是原子性的,這會更簡單。 –

回答

0

有很多方法可以解決這個問題。一個將是該對象的存儲庫的線程安全共享實例。當一個線程更新它時,其他線程會得到一個更新的副本。你可以使用WCF來簡化它。有些想法參見this article on WCF and concurrency。這是@Eric J對您問題的評論的實施。

另一個將通過事件來協調線程。當一個線程更新對象時,一個事件被髮送給其他人。如果對象沒有經常改變,那可能就足夠了。

This question談到第三種可能性:BackgroundWorker

+0

以及即時通訊使用wpf和即時消息使用調度大部分的調用...這個對象應該更新,但它不是 – jharr100

+0

我提交了一個編輯,包括在問題的正文中的信息,並適當標記。我沒有足夠的WPF經驗來提供任何進一步的幫助。祝你好運! – neontapir