如何在调试时停止计时器
本文关键字:计时器 调试 | 更新日期: 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
}