停止一个System.Timers.Timer,它在其已用事件处理程序中重新启用它

时间:2017-09-06 06:53:17

标签: c# if-statement timer

我有一个计时器来轮询外部服务。轮询可能需要一段时间,因此我使用一次性定时器(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(); 

0 个答案:

没有答案