2012-02-11 49 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通常更为合理,因为它们不那么重要:无论排序如何,您都可以通过门。