如何在调试时停止计时器

Dun*_*unk 10 c# visual-studio-debugging

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

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

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

Car*_*ten 12

如果你想要你可以将它包装成一个#if DEBUG指令 或你可以使用System.Diagnostic.Debugger.IsAttached


Cᴏʀ*_*ᴏʀʏ 5

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
    }
Run Code Online (Sandbox Code Playgroud)