vc 关闭程序后任务管理器进程中进程仍然存在的解决方法

可以从以下几个方面进行查找!

1. 程序开启了进程,进程中使用了while(1),在程序退出时未能关闭该线程

方法: 在主进程类的析构函数结束该线程


2. 程序的消息队列未销毁引起

使用了GetMessage创建了消息队列,但在程序退出时没有及时处理完消息

解决方法: 将 GetMessage 的最后一个参数设置为PM_REMOVE,即每次处理完消息队列中的消息后即刻从消息队列中销毁该消息


小结:

       我编程中遇到的问题就属于第二种情况,刚开始从检查全局变量是否在退出时被释放时查起,接着检查了上述的情况1,发现进程还是在任务管理器中存在,

最后在调试程序中发现向GetMessage 所在的线程发送了一次某个消息,处理完后发现GetMessage 始终还能继续接收该消息[按理接收一次后下次GetMessage

就不会再收到该消息了],所有怀疑是该消息在处理完后没有被销毁,始终存留在消息队列中,导致GetMessage 不停从消息队列中提取该消息。 经过确认发现,

是将该函数的最后一个参数设置为NULL 引起,  改为PM_REMOVE后问题解决


你可能感兴趣的:(项目应用)