如何在调试时停止计时器

时间:2012-03-05 21:42:43

标签: c# visual-studio-debugging

所以我设置了System.Timers.Timer并拥有Elapsed事件的处理程序。它按预期工作。

但是,如果我想调试在已用过的处理程序中调用的代码;计时器将继续生成其他事件。因此,我无法单步执行代码,因为计时器事件会叠加在一起。

目前的解决方法是在进入处理程序时调用计时器Stop,离开时调用Start。但是,这不是系统应该如何工作,因此这是一个临时修复。我想知道是否有办法配置调试器在调试时暂停计时器。

2 个答案:

答案 0 :(得分:11)

如果您愿意,可以将其包装成#if DEBUG directive 或者您可以使用System.Diagnostic.Debugger.IsAttached

答案 1 :(得分:4)

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
    }