加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

vb.net – 准确的Windows计时器? System.Timers.Timer()限制为1

发布时间:2020-12-17 00:03:58 所属栏目:大数据 来源:网络整理
导读:我需要一个准确的计时器来将Windows应用程序连接到一个实验室设备. 我使用System.Timers.Timer()来创建一个每10毫秒滴答一次的计时器,但这个时钟运行缓慢.例如,间隔为10毫秒的1000个刻度应该需要10个挂钟秒,但它实际上需要20个挂钟(在我的电脑上).我猜这是因
我需要一个准确的计时器来将Windows应用程序连接到一个实验室设备.

我使用System.Timers.Timer()来创建一个每10毫秒滴答一次的计时器,但这个时钟运行缓慢.例如,间隔为10毫秒的1000个刻度应该需要10个挂钟秒,但它实际上需要20个挂钟(在我的电脑上).我猜这是因为System.Timers.Timer()是一个间隔计时器,每次经过时都会重置.由于在定时器过去和重置之间总是需要一些时间(到另一个10毫秒),时钟将运行缓慢.如果间隔很大(几秒或几分钟),这可能很好,但是对于非常短的间隔是不可接受的.

Windows上是否有一个函数会在每次系统时钟跨越10毫秒(或其他)边界时触发一个过程?

这是一个简单的控制台应用程序

谢谢

规范

更新:System.Timers.Timer()对于小间隔非常不准确.

我写了一个简单的程序,计算10秒:

间隔= 1,计数= 10000,运行时间= 160秒,每间隔msec = 16

间隔= 10,计数= 1000,运行时间= 16秒,每间隔毫秒= 15

间隔= 100,计数= 100,运行时间= 11秒,每间隔msec = 110

间隔= 1000,计数= 10,运行时间= 10秒,每间隔msec = 1000

无论如何,似乎System.Timers.Timer()无法在15毫秒左右更快地打勾
间隔设置.

请注意,这些测试似乎都没有使用任何可测量的CPU时间,因此限制不是CPU,只是.net限制(bug?)

现在我认为我可以使用一个不准确的计时器,每15毫秒左右触发一个程序,并且例程可以获得准确的系统时间.有点奇怪,但……

我还发现了一个共享软件产品ZylTimer.NET,它声称是一个更精确的.net计时器(分辨率为1-2毫秒).这可能是我需要的.如果有一种产品,可能还有其他产品.

再次感谢.

您需要使用 high resolution timer,例如QueryPerformanceCounter

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读