C# 从不同线程调用方法AutoResteEvent安全吗?

C# 从不同线程调用方法AutoResteEvent安全吗?,c#,multithreading,autoresetevent,C#,Multithreading,Autoresetevent,从不同线程调用方法AutoResteEvent安全吗? 或者我应该避免从不同线程调用对象吗 class Test { EventWaitHandle wh = new AutoResetEvent(false); Thread worker = new(Work); public Test { worker.Start(); } public void StopSignal() { wh.Set();

从不同线程调用方法AutoResteEvent安全吗? 或者我应该避免从不同线程调用对象吗

class Test 
{
    EventWaitHandle wh = new AutoResetEvent(false);
    Thread worker = new(Work);

    public Test
    {
        worker.Start();
    }

    public void StopSignal()
    {
        wh.Set(); //<-- Main thread Call
    }

    void Work() 
    {
        wh.WaitOne(); //<-- Child thread call
    }
}
类测试
{
EventWaitHandle wh=新的自动重置事件(false);
线程工作者=新(工作);
公开考试
{
worker.Start();
}
公共停车信号机()
{

wh.Set();//那很好——这就是它的用途


有关更多信息,请参阅文章。底部附近有一个名为“线程安全”的部分,在MSDN上列出了大多数类,因此如果您不确定将来是否有任何其他类是线程安全的,您可以在那里查看。

AutoResetEvent和ManualResetEvent的整个要点就是提供di之间的同步不同的线程


有关详细信息,请参阅。

是的,从不同线程调用方法AutoResteEvent是安全的。请看一下。我希望这能让您明白。

它是为线程之间工作(通信)而设计的。如果不安全,WaitHandles将毫无用处。您将很难选择正确的答案!