【发布时间】:2022-01-06 14:31:29
【问题描述】:
我想编写一个程序,它需要每秒获取一个滴答事件。 该程序运行了很多小时,并且滴答声必须与系统时钟的秒数一致。 使用任何一种每秒触发一个事件的计时器都不是一个好主意。有很多不准确之处。 如果您的误差为每秒 100 毫秒,则计时器每小时比系统时钟晚 6 次。 但是,它必须与系统时钟完全一致。
从系统时钟获取事件是可以的。
有几秒钟的不准确是可以的,但不是全部。
你有什么解决这个问题的建议?
解决方案必须在c# net6上运行(我打算在Windows和Linux上运行程序)。
谢谢
【问题讨论】:
-
你尝试了什么?
-
解决此问题的一种方法是为计时器设置一个更短的间隔,然后使用绝对时间 (DateTime.Now) 来查看是否该增加您的秒数。
-
在以前版本的软件中,我使用了 Winmm.dll 解决方案。这是非常准确和有效的。新版本必须能够运行 Linux。所以,Winmm.dll 不再是解决方案了。
-
您确认每秒钟触发一次的计时器是不准确的吗?我认为不会。很容易测试。