【发布时间】:2014-08-12 03:06:26
【问题描述】:
我有一个可等待的计时器,其重置时间为 24 小时。但是,计时器每天都会延迟大约 3 分钟。所以我想知道是什么原因造成的。我正在使用SetWaitableTimer 的lPeriod,它指定了以毫秒为单位的时间。这是我用来设置计时器的代码。
int SetTimr(LARGE_INTEGER* fire, node* cursor, LONG reset)
{
// Create an unnamed waitable timer.
cursor->hTimer = CreateWaitableTimer(NULL, false, NULL);
if (cursor->hTimer == NULL)
{
printf("CreateWaitableTimer failed (%d)\n", GetLastError());
return 1;
}
// Set a timer to wait for N seconds.
if (!SetWaitableTimer(cursor->hTimer, fire, reset, NULL, NULL, true))
{
printf("SetWaitableTimer failed (%d)\n", GetLastError());
return 1;
}
return 0;
}
fire 是它应该发出信号的时间,它从来没有出现过问题。
reset 是计时器再次触发的时间,设置为
常量为
#define DAY 86400000 我理解为 24 小时。
我每 250 毫秒检查一次计时器,这不会对延迟产生如此大的影响。所以我想知道是否有人对我如何使用计时器有任何想法。我意识到我可以将计时器重新设置为所需的时间,但我不明白为什么这不能正常工作。
【问题讨论】:
-
MSDN 和这个问题有什么关系?
-
如果您希望计时器每天在同一时间响起,请考虑将其设置为特定时间(每天),而不是使用句点。