J'ai un objet timer. Je veux qu'il soit exécuté à chaque minute. Plus précisément, il doit exécuter un OnCallBack
méthode et devient inactif pendant un OnCallBack
méthode est en cours d'exécution. Une fois un OnCallBack
méthode de finitions, il a OnCallBack
) redémarre une minuterie.
Voici ce que j'ai en ce moment:
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
}
Cependant, il semble ne pas fonctionner. Il court très vite toutes les 3 secondes. Même si élever une période (1000*10). Il me semble qu'il ferme les yeux sur 1000 * 10
Qu'ai-je fait de mal?