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?

questionAnswers(5)

yourAnswerToTheQuestion