Arrêt du temporisateur dans sa méthode de rappel

J'ai un Système.Le filetage.Timer qui appelle à son gestionnaire d'événement approprié (rappel) à chaque 10 ms. La méthode elle-même est non réentrant et peut parfois prendre façon de plus de 10 ms. Donc, je veux arrêter le chronomètre lors de l'exécution de la méthode.

Code:

private Timer _creatorTimer;

//BackgroundWorker's work
private void CreatorWork(object sender, DoWorkEventArgs e) {
      _creatorTimer = new Timer(CreatorLoop, null, 0, 10);

      //some other code that worker is doing while the timer is active
      //...
      //...
}

private void CreatorLoop(object state) {
      //Stop timer (prevent reentering)
      _creatorTimer.Change(Timeout.Infinite, 0);

      /*
          ... Work here
      */

      //Reenable timer
      _creatorTimer.Change(10, 0);
} 

MSDN indique que la méthode de rappel est appelée chaque fois que le timer se déclenche) dans le thread du pool de threads. Cela signifie que si j'arrêt de la minuterie, la première chose dans la méthode elle n'est pas toujours impérativement prévenir la minuterie à feu et à exécuter un autre exemple de la méthode avant de la première, avait une chance d'arrêter la minuterie.

Devrait peut-être que la minuterie (ou même la non réentrante de la méthode elle-même) être verrouillée?
Quelle est la bonne façon de prévenir la minuterie de cuisson lors de l'exécution de son rappel (et non réentrant) méthode?

source d'informationauteur Kornelije Petak