我想知道,新的AutoResetEvent(true)在C#中的用法?
爲什麼我會永遠想在AutoResetEvent
的構造函數傳遞一個true
?
我創建了一個waitHandle
,以便任何人打電話WaitOne()
實際上會等待。
如果我用true
對它進行實例化,它就好像它立即發送信號 - 這就像沒有等待的正常流程。
EventWaitHandle _waitHandle = new AutoResetEvent (false);
void Main()
{
new Thread (Waiter).Start();
Thread.Sleep (1000);
_waitHandle.Set();
Console.ReadLine();
}
void Waiter()
{
Console.WriteLine ("AAA");
_waitHandle.WaitOne();
Console.WriteLine ("BBBB");
}
輸出:
AAA...(delay)...BBB
更改爲:EventWaitHandle _waitHandle = new AutoResetEvent (true);
和輸出將是:
AAABBB
問題:
- 爲什麼我會永遠想 去做這個 ? (通過
true
)?
詞「釋放」是非常混亂的好像你正在釋放線程的CPU時間片,但是你實際上是讓它繼續工作,通過'.WaitOne()'調用。 – newprint
你說得對,它很混亂,我在該文檔頁面上添加了一條評論 – jeroenh