微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我需要一个准确的计时器来将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

原文地址:https://www.jb51.cc/vb/255819.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐