我有一个计时器对象。我希望它每分钟运行一次。具体来说,它应运行一个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),则立即调用回调方法。”。看起来对我来说是零。