System.Threading.Timer em c # parece não estar funcionando. Corre muito rápido a cada 3 segundos
Eu tenho um objeto de timer. Eu quero que seja executado a cada minuto. Especificamente, deve executar umOnCallBack
método e fica inativo, enquanto umOnCallBack
método está em execução. Uma vezOnCallBack
método termina, ele (umOnCallBack
) reinicia um temporizador.
Aqui está o que eu tenho agora:
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
}
No entanto, parece não estar funcionando. Corre muito rápido a cada 3 segundos. Mesmo quando se aumenta um período (1000 * 10). Parece que ele fecha os olhos para1000 * 10
O que eu fiz errado?