System.Threading.Timer w C # wydaje się nie działać. Działa bardzo szybko co 3 sekundy
Mam obiekt timera. Chcę, żeby była uruchamiana co minutę. W szczególności powinien uruchomićOnCallBack
metoda i staje się nieaktywna, gdy aOnCallBack
metoda jest uruchomiona. RazOnCallBack
metoda kończy, to (aOnCallBack
) restartuje timer.
Oto, co mam teraz:
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
}
Wydaje się jednak, że nie działa. Działa bardzo szybko co 3 sekundy. Nawet jeśli podniesiesz okres (1000 * 10). Wygląda na to, że przymyka oko1000 * 10
Co zrobiłem źle?