1
我無法正確刪除定時器隊列。我總是得到以下錯誤:Timer.exe中的0x77a915de未處理的異常:0xC0000005:訪問衝突讀取位置0x00000020。刪除定時器隊列定時器
我有一個簡單的計時器回調函數:
void CALLBACK TimerProc(void* lpParameter, BOOLEAN TimerOrWaitFired)
{
cout << "The timer is working!" << endl;
}
這裏是我創建和刪除計時器我的主要功能:
int main(int argc, char *argv[])
{
HANDLE hTimer;
// Create timer
CreateTimerQueueTimer(
&hTimer, // Timer handler
NULL, // Default timerqueue
(WAITORTIMERCALLBACK)TimerProc, // Callback function
0,
0,
(DWORD)2000, // Period value = 2 seconds
WT_EXECUTEINTIMERTHREAD);
// Do other tasks
// e.g. Sleep(10000);
// Delete Timer
if (!DeleteTimerQueueEx(hTimer, NULL))
{
cout << GetLastError() << endl;
}
return 0;
}
調試器總是停在DeleteTimerQueueEx線。爲什麼會發生這種故障?
hTimer的價值是什麼?我懷疑-1 – drescherjm
您正在添加到默認計時器隊列中,因爲您並未創建自己的(CreateTimerQueue)和IIRC,因此您無法刪除它,而是刪除計時器本身(DeleteTimerQueueTimer) - 或者如果要分組多個計時器,請創建自己的隊列。 –
hTimer的值是一個正整數。 @Alex K.:(DeleteTimerQueueTimer)正常工作。 – Tomi