這是使用System.Timers.Timer的正確方法嗎? 我的意思是...我創建計時器,設置要在Elapsed事件上調用的時間間隔和方法。System.Timers.Timer生命週期
double ms = 1000;
var t = new System.Timers.Timer(ms);
t.AutoReset = false;
t.Elapsed += (sender, e) => { runTask(); };
t.Start();
下一步是什麼?應該在定時器上處理一個呼叫嗎?我想我不能,或者Elapsed事件永遠不會發生。 我應該在一些全局變量中註冊Timer以避免丟失對它的引用,因此GC可以在調用Elapsed之前處置該計時器? 如果是這樣,一旦處理了Elapsed事件(因此我的任務已經執行),我該如何處理Timer呢?
如果Timer在Form A上創建並且用戶退出應用程序(如果任務嘗試訪問表單控件時發生異常,它發生在我身上一次),這可能會產生問題。 – 2011-02-10 10:38:43
@Mohib Sheth:我的回答是如何保護定時器免於被處置..明顯地停止它,你將需要調用Stop()。如果您可以在需要時取消訂閱您的事件處理程序,那也更好。亞歷克西斯已經解釋過它.... – 2011-02-10 13:44:14