C# 用于使用线程和不同类进行监视器锁定的共享变量

C# 用于使用线程和不同类进行监视器锁定的共享变量,c#,locking,wait,monitor,pulse,C#,Locking,Wait,Monitor,Pulse,我有一个正在开发的C#Windows应用程序,我在它们自己的线程中启动不同的类(即:线程1中的Class1实例,线程2中的Class2实例,等等) 我试图正确地挂起/恢复线程,但我不知道如何在不同的类和线程之间共享监视器Wait/Pulse的锁变量 这似乎应该有一个简单的答案,我就是想不出来。我真的很感激任何帮助 谢谢 使用公共静态字段,例如 public class Sync { public static object LockObject = new object(); /

我有一个正在开发的C#Windows应用程序,我在它们自己的线程中启动不同的类(即:线程1中的Class1实例,线程2中的Class2实例,等等)

我试图正确地挂起/恢复线程,但我不知道如何在不同的类和线程之间共享监视器Wait/Pulse的锁变量

这似乎应该有一个简单的答案,我就是想不出来。我真的很感激任何帮助


谢谢

使用公共
静态
字段,例如

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

使用公共
静态
字段,例如

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

监视器锁定对于shnchronization很有用,但是当用作消息传递API时,它通常只扩展到两个线程,因为您需要确切地知道每个线程在哪里才能知道它是否获得消息


当事情变得复杂时,AutoResetEvent或ManualResetEvent通常更为合理,因为它们对时间的要求较低:无论顺序如何,您都可以通过闸门。

监视器锁定对于shnchronization很有用,但当用作消息传递API时,它通常只扩展到两个线程,因为你需要知道每个人在哪里才能知道他们是否得到了信息


当事情变得复杂时,AutoResetEvent或ManualResetEvent通常更为明智,因为它们对时间的要求较低:无论顺序如何,您都可以通过大门。

这似乎应该有一个简单的答案。
@L.B.如果不充分了解问题,就很难对“静态”做出评论,但是在问题/问题中没有任何东西可以证明“公共领域”(啊,这现在涉及到一条被删除的评论)
这似乎应该有一个简单的答案
@L.B.如果没有对问题的充分理解,很难对“静态”进行评论,但在问题/问题中没有任何东西可以证明“公共领域”是合理的(啊,这现在涉及到一条被删除的评论)然后我可以直接从主类或任何线程类调用Sync::ManuelResetEventObj或其他什么?是的
Sync.LockObject
可以在任何线程或主类中使用谢谢,我可以使LockObject成为一个数组,以便同时挂起多个线程?然后我可以直接从mai调用Sync::ManuelResetEventObj或其他什么n类,或任何线程类?是的
Sync.LockObject
可用于任何线程或主类谢谢,我可以将LockObject设置为一个数组,以便同时挂起多个线程?