我在标题中有这个:
static volatile bool g_operational = true;
然后WM_CLOSE
有这个:
g_operational = false;
WaitForSingleObject(TimerDoneEvent , INFINITE);
DeleteTimerQueueEx(t_main , NULL);
计时器回调函数如下所示:
VOID CALLBACK main_timer(PVOID lpParam , BOOLEAN TimerOrWaitFired) {
// doing stuff
if ( !g_operational )
SetEvent(TimerDoneEvent);
}
计时器本身正在按照我的预期行事,但问题是将其从WM_CLOSE
关闭,发生的事情g_operational
设置为false
,那么每秒运行的计时器线程应该选择g_operational
为假,然后调用SetEvent
表示线程已完成,以便WaitForSingleObject
可以继续,但在回调函数g_operational
内始终保持true
,这是为什么?