2010-02-26 58 views
2

我開始使用C#System.Threading.Timer類。當定時器已經啓動,並且正在執行我指定的TimerCallback時,當我停止使用myTimer.Change(Timeout.Infinite, 0)的定時器時會發生什麼。停止C#定時器並執行回調

我的回調完成執行或立即中止?

如果沒有中止,有一種方法可以執行類似於Thread.Abort的操作來立即殺死要執行的代碼?

回答

2

您的回調不會中止,它會結束執行。 如果要停止執行,只需從return開始執行。

+0

非常感謝您的幫助! – 2010-02-26 12:39:40

1

我建議使用System.Timers.Timer,並且您將必須檢查回調函數中定時器的Enabled屬性以停止執行。

例子:

using System.Timers; 

創建一個新的Timer對象:

Timer timerObject = new Timer(); 
timerObject.Interval = 1000; 
timerObject.Start(); 
timerObject.Elapsed += new ElapsedEventHandler(timerObject_Elapsed); 

而且在事件handlign功能檢查啓用後:

void timerObject_Elapsed(object sender, ElapsedEventArgs e) 
{ 
    Timer timerObject = (Timer)sender; 
    if (!timerObject.Enabled) return; 
    while(true) 
    { 
     DoSomething..... 
     if (!timerObject.Enabled) return; 
    } 
} 
+0

非常感謝!它幫助! – 2010-02-26 12:39:56