我有一个计时器对象。我希望每分钟都能播放。具体来说,它应该运行一个 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
视而不见
我做错了什么?