说,我有以下的C++代码。如何推迟一个可等待计时器无限期
首先我创建一个手动可等待定时器作为这样:
HANDLE hWTimer = CreateWaitableTimer(NULL, FALSE, NULL);
然后它被设置为一个预定义的时间在将来触发一次(实际值由用户输入提供的):
double fSeconds2Wait = 10000;
LARGE_INTEGER li;
//Convert to 100 nanosecond intervals (MUST BE NEGATIVE)
li.QuadPart = -10000000LL * (LONGLONG)fSeconds2Wait;
SetWaitableTimer(hWTimer, &li, 0, NULL, NULL, 0);
然后,我有驻留在一个等待状态,等待计时器消防工作线程:
WaitForSingleObject(hWTimer, INFINITE);
//Perform actions when timer fires
我有,比方说,如果我要无限期推迟了“hWTimer”有可能稍后将其重置到另一个时间的问题(根据用户要求),我该怎么办呢?
从MSDN文档(用简单的谷歌搜索找到) - 定时器最初是无效的。要激活定时器,请调用SetWaitableTimer。如果定时器在调用SetWaitableTimer时已处于活动状态,则定时器停止,然后重新激活。以这种方式停止定时器不会将定时器状态设置为发信号,因此在定时器的等待操作中被阻塞的线程将被阻塞。但是,它会取消任何未完成的完成例程。 – Dampsquid 2012-02-29 22:10:44
@Dampsquid我很抱歉,但是这怎么回答我的问题? – ahmd0 2012-02-29 22:13:24
它说,你可以打电话的时候,它已经运行了SetWaitableTimer,并重新启动它 – Dampsquid 2012-02-29 22:15:48