タイマー キューを正しく削除できません。常に次のエラーが発生します: 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 行で停止します。なぜこの障害が発生するのですか?