如何在调试时停止计时器

本文关键字:计时器 调试 | 更新日期: 2023-09-27 18:27:01

所以我设置了一个System.Timers.Timer,并为Elapsed事件提供了一个处理程序。它按预期工作。

但是,如果我想调试在运行处理程序中调用的代码;计时器将继续生成附加事件。因此,我不能一步一步地完成代码,因为计时器事件堆叠在一起。

当前的解决方法是在进入处理程序时在计时器上调用Stop,在离开时调用Start。然而,这不是系统应该如何工作,所以这只是一个临时的解决方案。我想知道是否有一种方法可以将调试器配置为在调试时停止计时器。

如何在调试时停止计时器

如果需要,可以将其封装到#if DEBUG指令中也可以使用System.Diagnostics.Debugger.IsAttached

Timer.Elapsed事件处理程序中,您可以使用一些预处理器指令来包含停止和启动(或禁用和启用)计时器的代码:

    private static void OnTimedEvent(object source, ElapsedEventArgs e)
    {
#if DEBUG
        (source as Timer).Stop();
        // or
        (source as Timer).Enabled = false;
#endif
        // do your work
#if DEBUG
        (source as Timer).Start();
        // or
        (source as Timer).Enabled = true;
#endif
    }