所以我设置了System.Timers.Timer
并拥有Elapsed
事件的处理程序。它按预期工作。
但是,如果我想调试在已用过的处理程序中调用的代码;计时器将继续生成其他事件。因此,我无法单步执行代码,因为计时器事件会叠加在一起。
目前的解决方法是在进入处理程序时调用计时器Stop
,离开时调用Start
。但是,这不是系统应该如何工作,因此这是一个临时修复。我想知道是否有办法配置调试器在调试时暂停计时器。
答案 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
}