假设我有一个定时器控件,间隔设置为20ms.在这个控件里面,我正在做一些需要100ms才能完成的操作.所以一旦它进行了那个操作,Timer控制器会再次执行而不等待该操作完成吗?或者直到该操作没有完成,Timer才会再次执行?
编辑
我在控制台应用程序的一个单独的线程中使用System.Timers.Timer().我在下面与安德鲁讨论后编辑了我的问题.
System.Timers.Timer在"随机"线程池线程上运行和引发事件.回调和计时器滴答将同时运行,这意味着在间隔小于方法终止所用时间的情况下,您将重叠执行这些事件.
即使这种行为与我在下面发布的行为不同,您仍然不想这样做.结果将是线程池最终将耗尽.它也可能不是您想要的功能.
解决方案是对其进行编码,使得无法执行并发执行.
当我以为你在System.Windows.Forms中谈到Timer并在Windows Forms程序中使用它时,这是我发布的旧答案.因为情况并非如此,以下信息不适用于您.但我把它留在这里以防它帮助其他人.
因为System.Windows.Forms命名空间内的Timer控件在UI线程上运行,其回调也是如此,您的tick事件将堆积起来,等待当前正在执行的操作完成.您的UI也将在持续时间内被锁定.
因此,您不希望这样做.你的程序会锁定.