タイマーオブジェクトがあります。毎分実行してほしい。具体的には、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)の場合、コールバックメソッドがすぐに呼び出されます。」それは私にはゼロのように見えます。