2013-01-31 65 views
0

从不同线程调用AutoResetEvent方法是否安全? 还是应该避免从不同线程中调用对象?从不同线程调用AutoResetEvent方法是否安全?

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 
    } 
} 
+4

它旨在工作(沟通)之间的线程。如果不安全,WaitHandles将无用。 –

+0

你会很难选择正确的答案! –

回答

3

是的,可以安全地从不同的线程调用AutoResetEvent方法。看看这个link。我希望这能让你清楚。

3

这很好 - 这是它的用途!

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

+2

顺便说一句,该部分说:“**这个类是线程安全的。**”;-) –

0

AutoResetEvent和ManualResetEvent的整个点正好提供了不同线程之间的同步!

查看This article了解详情。