如何在C#中只引发一个Timer事件?

Ari*_*911 3 c# events timer

如何让计时器事件一次触发一个.例如,我有一个计时器,每10分钟发一次事件.引发的事件需要10分钟或更长时间才能完成执行.我希望计时器在事件结束后重置.换句话说,我不想在任何时候提出超过1个事件的实例.

Con*_*rix 14

使用System.Timers.Timer而不是线程

将AutoReset设置为false.

然后在完成后再次启动它.

  • 我不明白为什么手动停止/开始得到更多的选票 (2认同)

Ben*_*ter 6

通常我所做的是让我的事件在引发时停止计时器,然后在事件进程完成时重新启动计时器:

private void timerHandler(object sender, TimerElapsedEventArgs e)
{
    Timer timer = (Timer)sender;
    timer.Stop();
    RunProcess();
    timer.Start();
}

public void RunProcess()
{
    /* Do stuff that takes longer than my timer interval */
}
Run Code Online (Sandbox Code Playgroud)

现在我的计时器将在完成该过程后再次启动