怎么等30个小时?

时间:2015-03-19 21:39:02

标签: c winapi

我想等待很长一段时间(例如:30小时),最长延迟为2或3秒。我已经读过Sleep()WM_TIMER不准确,可能会在指定的时间后等待几分钟。

唯一可行的解​​决方案是使用GetTickCount(),我应该使用它还是有其他解决方案?

3 个答案:

答案 0 :(得分:3)

Windows不是实时操作系统。 Windows中没有可以提供任何此类保证的工具。

鉴于你可以这样做:

  1. 等待1/2的时间。
  2. 等待剩余的1/2时间。
  3. 依此类推,直到你的等待时间低于你想要的准确度。
  4. 但即便如此,Windows机器上的时钟是否能说明您所需的准确度?

    如果你真的关心计时的准确性,你需要一个实时操作系统,可能还有一个保证和已知准确度的专用时钟。

答案 1 :(得分:1)

我会尝试Sleep()WM_TIMER进行1或2小时的测试,然后看看距离多远,并将差异乘以30小时,看看你的延迟是多少。如果要长,请尝试GetTickCount()

答案 2 :(得分:1)

在WM_TIMER事件中使用GetLocalTime读取当前时间并检查必要的HH:MM:SS。

PS:使用GetTickCount64代替GetTickCount