Синхронизация метода Timers.Timer elapsed при остановке

Со ссылкой на эту цитату из MSDN о System.Timers.Timer:

Событие Timer.Elapsed возникает в ThreadPool, поэтому метод обработки событий может работать на одном поток одновременно с вызовом метод Timer.Stop работает на другом нить. Это может привести к Прошедшее событие возникает после Вызывается метод остановки. Эта гонка состояние нельзя предотвратить просто сравнивая свойство SignalTime со временем, когда метод Stop называется, потому что обработка событий метод может уже выполняться, когда вызывается метод Stop или может начать выполнение между моментом когда вызывается метод Stop и момент, когда сохраняется время остановки. Если очень важно предотвратить резьбу который вызывает метод Stop из продолжается во время обработки события метод все еще выполняется, используйте еще надежный механизм синхронизации, такой как класс Monitor или CompareExchange метод. Код, использующий метод CompareExchange может быть найдено в примере для Метод Timer.Stop.

Может ли кто-нибудь привести пример « надежного механизма синхронизации, такого как класс Monitor », чтобы объяснить, что именно это означает?

Я думаю, это означает использование блокировки каким-либо образом , но я не уверен, как это реализовать.

6
задан Andy 26 January 2011 в 21:56
поделиться