타이머 개체가 있습니다. 매분 실행되기를 바랍니다. 특히, 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이면 콜백 메소드가 즉시 호출됩니다." 나에게는 제로인 것 같습니다.