У меня есть объект таймера. Я хочу, чтобы он запускался каждую минуту. В частности, он должен запускать 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), метод обратного вызова вызывается немедленно.». Похоже, для меня это ноль.