我想等待很长一段时间(例如:30小时),最长延迟为2或3秒。我已经读过Sleep()
和WM_TIMER
不准确,可能会在指定的时间后等待几分钟。
唯一可行的解决方案是使用GetTickCount()
,我应该使用它还是有其他解决方案?
答案 0 :(得分:3)
Windows不是实时操作系统。 Windows中没有可以提供任何此类保证的工具。
鉴于你可以这样做:
但即便如此,Windows机器上的时钟是否能说明您所需的准确度?
如果你真的关心计时的准确性,你需要一个实时操作系统,可能还有一个保证和已知准确度的专用时钟。
答案 1 :(得分:1)
我会尝试Sleep()
和WM_TIMER
进行1或2小时的测试,然后看看距离多远,并将差异乘以30小时,看看你的延迟是多少。如果要长,请尝试GetTickCount()
答案 2 :(得分:1)
在WM_TIMER事件中使用GetLocalTime
读取当前时间并检查必要的HH:MM:SS。
PS:使用GetTickCount64
代替GetTickCount
。