System.Threading.Timer in C # scheint nicht zu funktionieren. Es läuft alle 3 Sekunden sehr schnell

Ich habe ein Timer-Objekt. Ich möchte, dass es jede Minute ausgeführt wird. Insbesondere sollte es ein laufenOnCallBack Methode und wird inaktiv, während aOnCallBack Methode läuft. EinmalOnCallBack Methode beendet, es (aOnCallBack) startet einen Timer neu.

Folgendes habe ich gerade:

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
}

Es scheint jedoch nicht zu funktionieren. Es läuft alle 3 Sekunden sehr schnell. Auch wenn Sie eine Periode erhöhen (1000 * 10). Es scheint, als würde es ein Auge zudrücken1000 * 10

Was habe ich falsch gemacht?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage