2012-02-11 81 views
1

我有一個C#Windows應用程序我正在努力在自己的線程中啓動不同的類(即:線程1中的Class1實例,線程2中的類2實例,等等)。監視器鎖定線程和不同類的共享變量

我想正確掛起/恢復線程,但我無法弄清楚如何在不同的類和線程之間共享監視器的等待/脈衝鎖定變量。

這似乎應該有一個簡單的答案,我只是無法弄清楚。我非常感謝任何幫助!

謝謝!

+3

'這似乎應該有一個簡單的答案'< - 我想我看到你的問題。 – Hogan 2012-02-11 16:35:29

+0

@ L.B。如果沒有對問題的充分理解,就很難評論「靜態」,但問題/問題中沒有任何理由來證明「公共領域」(嗯,現在這涉及到刪除的評論) – 2012-02-11 16:45:36

回答

1

使用公共static領域,恩,

public class Sync 
{ 
    public static object LockObject = new object(); 
    //or any other sync mechanism 
    //AutoResetEvent,ManualResetEvent,Semaphore,CountdownEvent,Mutex etc. 
} 
+0

然後我可以只需從主類或任何線程類調用Sync :: ManuelResetEventObj或者什麼? – Harry 2012-02-11 17:11:57

+0

是的'Sync.LockObject'可以在任何線程或主類中使用 – 2012-02-11 17:13:44

+0

謝謝,我可以使LockObject成爲一個數組,讓多個線程同時被掛起? – Harry 2012-02-11 18:47:16

0

監視器鎖定爲shnchronization有用的,但作爲一個消息 API,通常只擴展到兩個線程,因爲你需要確切地知道使用時每個人都知道它是否得到消息。

當事情變得複雜時,AutoResetEvent或ManualResetEvent通常更爲合理,因爲它們不那麼重要:無論排序如何,您都可以通過門。