說,我有以下的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