0
我有一個線程正在循環,並執行一些工作和執行之間的睡眠。我需要一種方法,將強制循環執行一次迭代,並等待一個完整的迭代完成無限循環線程的一次迭代塊
我能夠強制循環運行與AutoResetEvent
,但不能想到一個安全的方式等待,直到胎面做了一次迭代。
public class EndlessLoopThread
{
private AutoResetEvent _wakeupEvent = new AutoResetEvent(false);
private Thread _thread;
public int Count;
public EndlessLoopThread()
{
_thread = new Thread((s) =>
{
while (true)
{
//... (Do a bunch of important stuff here)
Interlocked.Increment(ref Count);
_wakeupEvent.WaitOne(5000);
}
});
_thread.Start();
}
public void DoStuffOnThreadAndBlockUntilDone()
{
_wakeupEvent.Set();
//how do i block until the thread has done its stuff and gone back to sleep
}
}
任何想法,我可以阻止,直到線程完成其工作?
謝謝,看起來像這樣做。我想重新設計它,不幸的是,這是一個複雜,不熟悉和脆弱的現有代碼庫。想要一個runonce方法來獲得一些單元測試一致的工作。 – Alex 2014-09-22 07:59:15