Dot-Net
我可以在其回調中處理 Threading.Timer 嗎?
我正在使用
Threading.Timer,例如:new Timer(new TimerCallback(y=> { try { Save(Read(DateTime.Now)); // here i want to dispose this timer } catch { } }),null,100000,10000);如何在回調中處理此計時器。或解決方法?更新:讓我解釋一下情況。我想嘗試呼叫方法“Save”,而它會引發異常。如果它有效,我需要停止計時器。
試試這個:
Timer timer = null; timer = new Timer(new TimerCallback(y => { try { Save(Read(DateTime.Now)); // here i want to dispose this timer timer.Dispose(); } catch { } })); timer.Change(10000, 10000);編輯:
我根據 Chuu 的建議稍微修改了上面的程式碼。請注意,如果 TimerCallback 被不同的定時器事件同時呼叫,
Timer.Dispose最終可能會被呼叫多次。幸運的是,Timer它並不關心它是否被多次處理。
您需要將計時器的引用保存在變數中 -
public class MyClass { private Timer _timer; public void StartTimer() { _timer = new Timer(new TimerCallback(y=>{ try { Save(Read(DateTime.Now)); _timer.Dispose(); } catch { } }),null,100000,10000); } }注意:這是未經測試的程式碼。請檢查它是否有效並更新。