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?