0

在我的系统中,我想制作一个可以每天进行过程调用的计时器,我知道 API 可以满足我的需求,命名为“SetWaitableTimer”,正如我从 msdn 中看到的,“SetWaitableTimer”定义为:

BOOL WINAPI SetWaitableTimer(
  _In_      HANDLE hTimer,
  _In_      const LARGE_INTEGER *pDueTime,
  _In_      LONG lPeriod,
  _In_opt_  PTIMERAPCROUTINE pfnCompletionRoutine,
  _In_opt_  LPVOID lpArgToCompletionRoutine,
  _In_      BOOL fResume
);

lPeriod 为调用周期,类型为 long,long 的值从 –2,147,483,648 到 2,147,483,647。但我需要的时间是 24 小时,即 24*60*60*10000000 , 10000000 是一秒的长度。我确实知道如何用这个 api 解决我的问题,任何人都可以帮助我吗?谢谢!

4

2 回答 2

1

周期以毫秒为单位。一秒钟有 1,000 毫秒。所以这个时期是:

24 * 60 * 60 * 1000

或 86400 * 1000 =86,400,000

于 2013-09-02T03:40:02.167 回答
0

MSDN

定时器的周期,以毫秒为单位。如果 lPeriod 为零,则向计时器发出一次信号。如果 lPeriod 大于零,则计时器是周期性的。每次经过该周期时,周期性计时器会自动重新激活,直到使用 CancelWaitableTimer 函数取消计时器或使用 SetWaitableTimer 重置计时器。如果 lPeriod 小于零,则函数失败。

SetWaitableTimer 期望 DueTime 以 100 ns 为单位。不幸的是 ( ! ) 它不接受以 100 ns 为单位的周期。

于 2013-09-02T06:33:18.737 回答