C++ 删除计时器队列计时器
我无法正确删除计时器队列。我总是收到以下错误:Timer.exe中0x77a915de处的未处理异常:0xC0000005:访问冲突读取位置0x00000020 我有一个简单的计时器回调函数:C++ 删除计时器队列计时器,c++,winapi,timer,C++,Winapi,Timer,我无法正确删除计时器队列。我总是收到以下错误:Timer.exe中0x77a915de处的未处理异常:0xC0000005:访问冲突读取位置0x00000020 我有一个简单的计时器回调函数: void CALLBACK TimerProc(void* lpParameter, BOOLEAN TimerOrWaitFired) { cout << "The timer is working!" << endl; } 这是我的主要功能,我在这里创建和删除计时器:
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您正在添加到默认计时器队列,因为您没有创建自己的CreateTimerQueue,IIRC您无法删除它,而是删除计时器本身DeleteTimerQueueTimer-或者如果您要将多个计时器分组,请创建自己的队列。hTimer的值为正整数@Alex K:DeleteTimerQueueTimer工作正常。@Alex K:你应该把它作为一个答案,这样它就可以被投票和接受。hTimer的值是多少?我怀疑-1您正在添加到默认计时器队列,因为您没有创建自己的CreateTimerQueue,IIRC您无法删除它,而是删除计时器本身DeleteTimerQueueTimer-或者如果您要将多个计时器分组,请创建自己的队列。hTimer的值为正整数@Alex K:DeleteTimerQueueTimer工作正常。@Alex K:你应该把它作为一个答案,这样它就可以被投票和接受。