转载出处:http://blog.csdn.net/zac_sian/article/details/50809084
可以从以下两个方面进行查找!
1、程序开启了进程,进程中使用了while(1),在程序退出时未能关闭该线程
解决方法: 在主进程类的析构函数结束该线程
2、程序的消息队列未销毁引起
使用了GetMessage创建了消息队列,但在程序退出时没有及时处理完消息
解决方法: 将 GetMessage 的最后一个参数设置为PM_REMOVE,即每次处理完消息队列中的消息后即刻从消息队列中销毁该消息
小结:
我编程中遇到的问题就属于第二种情况,刚开始从检查全局变量是否在退出时被释放时查起,接着检查了上述的情况1,发现进程还是在任务管理器中存在,最后在调试程序中发现向GetMessage 所在的线程发送了一次某个消息,处理完后发现GetMessage 始终还能继续接收该消息[按理接收一次后下次GetMessage就不会再收到该消息了,所有怀疑是该消息在处理完后没有被销毁,始终存留在消息队列中,导致GetMessage 不停从消息队列中提取该消息。 经过确认发现,是将该函数的最后一个参数设置为NULL引起,改为PM_REMOVE后问题解决