2012-10-09 46 views
0

我試圖創建以下效果:C#進程和線程終止時間結束 - 可等待計時器

我在同一時間運行的線程x個,我想他們都停止時,計時器進入關閉。

我能想到的唯一的事情就是擁有一個共享的布爾值,當時間到了時它會改變。有誰知道如何用線程計時器和AutoResetEvent做到這一點?

我有一個很難找到如何使用自動復位事件......

你知道的更好的方法來達到這種效果?

過程怎麼樣?

回答

0

而不是共享一個布爾值,使用ManualResetEvent並讓每個線程等待它。

private static void ThreadDelegate(object state) 
{ 
    object[] stateArray = (object[])state; 
    ManualResetEvent resetEvent = (ManualResetEvent)stateArray[0]; 

    //Do some work. 
    ... 

    resetEvent.WaitOne(); 
} 

,直到調用resetEvent.Set();這將阻止線程,我想最好的答案,這真的取決於你如何組織你的代碼。我所建議的取決於//Do some work位的做法,就像創建Timer並在某個間隔調用回調一樣。