When the signal is received, the system creates a new thread in the process to execute the function.
当收到信号后,系统启动新的线程来执行处理函数。
The PostQuitMessage function posts a WM_QUIT message to the thread's message queue and returns immediately;
PostQuitMessage函数把WM_QUIT消息放入线程的消息循环,并且立即返回。
问题出在文档并没有明确说明是哪个线程,实际上就是执行PostQuitMessage的当前线程,而根据第一句话可知,当前线程并不是系统的主线程,所以,PostQuitMessage方法并不能把消息放入主线程的循环,所以无效。
解决办法:1,使用ExitProgress,这种方法很暴力,不能友好的退出,导致资源不会合理释放,可能内存泄露的检测程序也会报泄露。自私的微软会自动关闭所有打开的句柄,但是非句柄资源很不幸。
2,在ConsoleHandler处理函数中设置一个标记,主线程循环检测该标记,判断是否退出。这种方法较合理。