C#System.Windows.Forms.timers他们为什么这么晚? [重复]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#System.Windows.Forms.timers他们为什么这么晚? [重复]相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
我有一个程序,在短时间内必须内置一个屏幕保护程序。应用程序已经在短时间间隔内使用了System.Windows.forms计时器。大约100毫安,但它运行在快速的硬件和代码宽度,间隔很短,所以该部分从未给出延迟问题。
屏幕保护程序必须在30分钟后启动。为了测试,我添加了另一个用于6000毫安的forms.timer设置。在Debug模式和Release版本中,这些6000毫安都需要大约11秒。我觉得这很不可靠。没有迹象表明该程序的任何部分都很慢或CPU需求很高,而且我已经测试过,因为它必须快速工作(并且它都可以快速工作),除了屏幕保护程序(黑色表单宽度简单)图形)显示大约两倍的时间。表格计时器不可靠吗?
System.Windows.Forms.Timer
基本上是本地WM_TIMER
消息的包装。这意味着它的消息在大约接近设置的Interval
值的时间放置在UI线程的消息队列中。与用户输入,气喘等其他消息相比,这种消息的优先级较低。这意味着它不那么重要,并且根据队列中存在的其他消息以及后者需要处理多长时间来处理。
最重要的是,MSDN说:
Windows窗体计时器组件是单线程的,精度限制为55毫秒。如果需要更高精度的多线程计时器,请在System.Timers命名空间中使用Timer类。
你应该选择一个更具响应性的计时器类,不受这种限制,例如System.Timers.Timer
或System.Threading.Timer
。它们都可以在接口应用程序中使用(特别是前者,它继承自Component
)并使用线程池方法引发它们的事件。
以上是关于C#System.Windows.Forms.timers他们为什么这么晚? [重复]的主要内容,如果未能解决你的问题,请参考以下文章