我有一个计时器来轮询外部服务。轮询可能需要一段时间,因此我使用一次性定时器(System.Timers.Timer
)并在操作完成时重新启用它,因此我一次只有一个正在运行的轮询。现在我需要使用引用在外部停止此计时器,并防止事件在单独的线程中重新启动它。
System.Timers.Timer pollTimer = new System.Timers.Timer {
Enabled = true,
AutoReset = false,
Interval = 4 * 1000,
};
pollTimer.Elapsed += new System.Timers.ElapsedEventHandler(
(object sender, System.Timers.ElapsedEventArgs e) => {
if (!PollSuccess())
{
((System.Timers.Timer) sender).Start();
}
else
{
// Work
}
});
// I want the timer to stop permanently here, ie prevent the elapsed
//event handler from restarting it.
pollTimer.Stop();