Tengo un objeto de temporizador. Quiero que se ejecute cada minuto. Específicamente, debería ejecutar un OnCallBack
método y permanecer inactivo mientras OnCallBack
se ejecuta un método. Una vez que finaliza un OnCallBack
método, (a OnCallBack
) reinicia un temporizador.
Esto es lo que tengo ahora mismo:
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
}
Sin embargo, parece que no funciona. Corre muy rápido cada 3 segundos. Incluso cuando se eleva un punto (1000 * 10). Parece que se hace de la vista gorda1000 * 10
¿Qué hice mal?
Timer.Change
: "Si dueTime es cero (0), el método de devolución de llamada se invoca inmediatamente". Parece que es cero para mí.