我有一个计时器对象。我希望它每分钟运行一次。具体来说,它应该运行一个名为OnCallBack
的方法,并在OnCallBack
方法正在运行时处于非活动状态。一旦OnCallBack
方法完成,它(OnCallBack
)会重新启动计时器。
这是我目前拥有的:
private static Timer timer;
private static void Main()
{
timer = new Timer(_ => OnCallBack(), null, 0, 1000 * 10); //every 10 seconds
Console.ReadLine();
}
private static void OnCallBack()
{
timer.Change(Timeout.Infinite, Timeout.Infinite); //stops the timer
Thread.Sleep(3000); //doing some long operation
timer.Change(0, 1000 * 10); //restarts the timer
}
然而,它似乎没有起作用。它每3秒非常快地运行一次。即使我提高了周期(1000*10),它似乎对1000 * 10
视而不见。
我做错了什么?
Timer.Change
的说明:“如果dueTime为零(0),则立即调用回调方法。” 看起来它确实是零。 - Damien_The_Unbeliever