我开始使用C#System.Threading.Timer
类。当计时器已经启动并且我正在执行我指定的TimerCallback时,当我使用myTimer.Change(Timeout.Infinite, 0)
停止计时器时会发生什么。
我的回调是完成执行还是立即中止?
如果没有中止,有一种方法可以执行与Thread.Abort
类似的操作来立即查杀要执行的代码吗?
答案 0 :(得分:2)
您的回调不会中止,它会完成执行。
如果你想停止执行,只需从函数中return
。
答案 1 :(得分:1)
我建议使用System.Timers.Timer
,您必须在回调函数中检查计时器的Enabled属性以停止执行。
示例:
using System.Timers;
创建一个新的Timer对象:
Timer timerObject = new Timer();
timerObject.Interval = 1000;
timerObject.Start();
timerObject.Elapsed += new ElapsedEventHandler(timerObject_Elapsed);
在事件手柄功能检查中启用:
void timerObject_Elapsed(object sender, ElapsedEventArgs e)
{
Timer timerObject = (Timer)sender;
if (!timerObject.Enabled) return;
while(true)
{
DoSomething.....
if (!timerObject.Enabled) return;
}
}