假设我有一个定时器控件,间隔设置为20ms。在这个控件里面,我正在做一些需要100ms才能完成的操作。所以一旦它进行了那个操作,Timer控制器会再次执行而不等待该操作完成吗?或者直到该操作没有完成,Timer才会再次执行?
修改
我在控制台应用程序中的一个单独的线程中使用System.Timers.Timer()。我在下面与安德鲁讨论后编辑了我的问题。
答案 0 :(得分:0)
System.Windows.Forms.Timer是单线程的,只有55ms的分辨率。但由于它是单线程的,因此Tick事件不应该相互衔接。
http://msdn.microsoft.com/en-us/library/system.windows.forms.timer.aspx
答案 1 :(得分:0)
在单线程应用程序中,如果执行不可能,则滴答将排队。它的分辨率也是~55ms
请参阅http://msdn.microsoft.com/en-us/library/xdh6857z.aspx
请参阅How to prevent System.Timers.Timer from queuing for execution on a thread pool?
答案 2 :(得分:0)
.NET Framework文档引用System.Timers.Timer class作为基于服务器的计时器,专为使用而设计和优化 在多线程环境中。这个计时器类的实例可以是 从多个线程安全访问。不像 System.Windows.Forms.Timer,System.Timers.Timer类将由 默认情况下,在获得的工作线程上调用timer事件处理程序 来自公共语言运行时(CLR)线程池。
有关计时器类型的详细信息,请参阅链接http://msdn.microsoft.com/en-us/magazine/cc164015.aspx
注意:前面的示例是在假定计时器实例是System.Windows.Forms.Timer的情况下编写的,但作者的说明表明使用了System.Timers.Timer()实例。