System.Threading.Timer
простой таймер. Он вызывает вас обратно в поток пула потоков (из рабочего пула).
System.Timers.Timer
это System.ComponentModel.Component
обертка System.Threading.Timer
, и предоставляет некоторые дополнительные функции, используемые для диспетчеризации в определенном потоке.
System.Windows.Forms.Timer
вместо этого оборачивает собственный HWND только для сообщений и использует таймеры окон, чтобы вызывать события в этом цикле сообщений HWND.
Если ваше приложение не имеет пользовательского интерфейса и вам нужен самый легкий и универсальный таймер .Net, возможный (потому что вы счастливы, вычисляя свою собственную многопоточность / диспетчеризацию), то System.Threading.Timer
он так же хорош, как и в рамках.
Я не до конца понимаю, с чем System.Threading.Timer
связаны проблемы «не безопасных потоков» . Возможно, это то же самое, что задано в этом вопросе: Потоковая безопасность System.Timers.Timer против System.Threading.Timer , или, возможно, каждый просто означает, что:
Легко писать условия гонки, когда вы используете таймеры. Например, смотрите этот вопрос:
Таймер (System.Threading) поток безопасности
повторный вход уведомлений таймера, когда ваше событие таймера может вызвать и перезвонить вам во второй раз, прежде чем вы закончите обработку первого события. Например, посмотрите на этот вопрос: поточно-ориентированное выполнение с использованием System.Threading.Timer и Monitor.