У мене об’єкт таймера. Я хочу, щоб це працювало щохвилини. Зокрема, він повинен запускати 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
Що я зробив не так?
Timer.Change
: "Якщо dueTime дорівнює нулю (0), метод зворотного виклику викликається негайно." Схоже, це для мене нуль.