C#System.Windows.Forms.timers他们为什么这么晚?

时间:2017-12-18 23:43:35

标签: c# timer

我有一个程序,在短时间内必须建立一个屏幕保护程序。 应用程序已在短时间间隔内使用System.Windows.forms计时器。大约100毫安,但它运行在快速的硬件和代码宽度,间隔很短,所以这部分从来没有给出延迟问题。

屏幕保护程序必须在30分钟后启动。 为了测试,我添加了另一个用于6000毫安的forms.timer设置。 在Debug模式和Release版本中,这些6000毫安都需要大约11秒。我觉得这很不可靠。没有任何迹象表明该程序的任何部分都很慢或CPU需求很高,而且我已经测试过,因为它必须快速工作(并且它都可以快速工作),除了屏幕保护程序(黑色表格)宽度简单的图形)显示大约两倍的时间。 表格计时器不可靠吗?

1 个答案:

答案 0 :(得分:0)

System.Windows.Forms.Timer基本上是本机WM_TIMER消息的包装器。这意味着它的消息在大约接近集合Interval值的时间放置在UI线程的消息队列中。与用户输入,气喘等其他消息相比,这种消息的优先级较低。这意味着它不那么重要,并且根据队列中存在的其他消息以及后者需要多长时间处理它来处理。

最重要的是,MSDN表示:

  

Windows窗体计时器组件是单线程的,并且是有限的   精度为55毫秒。如果您需要多线程   更精确的计时器,使用System.Timers中的Timer类   命名空间。

您应该选择一个更具响应性的计时器类,不受此类限制的限制,例如System.Timers.TimerSystem.Threading.Timer。它们都可以在接口应用程序中使用(特别是前者,它继承自Component)并使用线程池方法引发它们的事件。

相关问题