我有一個像下面如何在單獨的線程中運行計時器?
for(int i = 0; i < 10; i++)
{
// some long time processing
}
我想創建一個計時器,它會檢查,如果一個處理運行超過5分鐘一個循環。如果一次處理運行超過5分鐘,則會停止當前處理,然後開始另一次處理。
是否有可能使另一個線程來監視主循環?
我的程序是一個控制檯應用程序。
我有一個像下面如何在單獨的線程中運行計時器?
for(int i = 0; i < 10; i++)
{
// some long time processing
}
我想創建一個計時器,它會檢查,如果一個處理運行超過5分鐘一個循環。如果一次處理運行超過5分鐘,則會停止當前處理,然後開始另一次處理。
是否有可能使另一個線程來監視主循環?
我的程序是一個控制檯應用程序。
你應該使用System.Timers.Timer
看看ManualResetEvent,特別是WaitOne方法。
除了傑米的asnwer可以使用System.Threading.Timer,這將在後臺線程中執行。
但是,您仍然無法中止正在運行的代碼。 代碼iteself必須提供取消自己的能力,定時器可以在特定時間後調用它。
你可以使用一個布爾值「shouldCancel」,例如你在循環的每次迭代中(或者甚至多次)檢查。
「壞」的方式將使用Thread.Abort - 但是,這不是很好的風格。
其實這是'System.Timers.Timer' – 2009-12-15 13:03:13
什麼是System.Timers.timer和System.Threading.Timer – 2009-12-15 13:03:40
@Alex,固定(15chars) – Fredou 2009-12-15 13:04:19