У меня есть объект таймера. Я хочу, чтобы он запускался каждую минуту. В частности, он должен запускать метод OnCallBack
и неактивен, пока работает метод OnCallBack
. Когда метод OnCallBack
завершается, он (a 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
Что я сделал не так?