System.Threading.Timer en C # parece no estar funcionando. Corre muy rápido cada 3 segundos.

Tengo un objeto temporizador. Quiero que se ejecute cada minuto. Específicamente, debe ejecutar unOnCallBack Método y se inactiva mientras que unaOnCallBack El método se está ejecutando. Una vezOnCallBack El método termina, seOnCallBack) reinicia un temporizador.

Aquí está lo que tengo ahora:

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 está funcionando. Se ejecuta muy rápido cada 3 segundos. Incluso cuando si aumenta un período (1000 * 10). Parece que hace la vista gorda a1000 * 10

¿Qué hice mal?

Respuestas a la pregunta(5)

Su respuesta a la pregunta