了解C#中Timer控件的工作原理

时间:2012-01-25 04:32:10

标签: c# .net timer

假设我有一个定时器控件,间隔设置为20ms。在这个控件里面,我正在做一些需要100ms才能完成的操作。所以一旦它进行了那个操作,Timer控制器会再次执行而不等待该操作完成吗?或者直到该操作没有完成,Timer才会再次执行?

修改
我在控制台应用程序中的一个单独的线程中使用System.Timers.Timer()。我在下面与安德鲁讨论后编辑了我的问题。

3 个答案:

答案 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)

System.Timers.Timer

  

.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()实例。