停止执行C#定时器和回调

时间:2010-02-26 12:02:48

标签: c#

我开始使用C#System.Threading.Timer类。当计时器已经启动并且我正在执行我指定的TimerCallback时,当我使用myTimer.Change(Timeout.Infinite, 0)停止计时器时会发生什么。

我的回调是完成执行还是立即中止?

如果没有中止,有一种方法可以执行与Thread.Abort类似的操作来立即查杀要执行的代码吗?

2 个答案:

答案 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;
    }
}