vc 关闭程序后任务管理器进程中进程仍然存在的解决方法
2016-03-05 15:49
423 查看
可以从以下几个方面进行查找!
1. 程序开启了进程,进程中使用了while(1),在程序退出时未能关闭该线程
方法: 在主进程类的析构函数结束该线程
2. 程序的消息队列未销毁引起
使用了GetMessage创建了消息队列,但在程序退出时没有及时处理完消息
解决方法: 将 GetMessage 的最后一个参数设置为PM_REMOVE,即每次处理完消息队列中的消息后即刻从消息队列中销毁该消息
小结:
我编程中遇到的问题就属于第二种情况,刚开始从检查全局变量是否在退出时被释放时查起,接着检查了上述的情况1,发现进程还是在任务管理器中存在,
最后在调试程序中发现向GetMessage 所在的线程发送了一次某个消息,处理完后发现GetMessage 始终还能继续接收该消息[按理接收一次后下次GetMessage
就不会再收到该消息了],所有怀疑是该消息在处理完后没有被销毁,始终存留在消息队列中,导致GetMessage 不停从消息队列中提取该消息。 经过确认发现,
是将该函数的最后一个参数设置为NULL 引起, 改为PM_REMOVE后问题解决
1. 程序开启了进程,进程中使用了while(1),在程序退出时未能关闭该线程
方法: 在主进程类的析构函数结束该线程
2. 程序的消息队列未销毁引起
使用了GetMessage创建了消息队列,但在程序退出时没有及时处理完消息
解决方法: 将 GetMessage 的最后一个参数设置为PM_REMOVE,即每次处理完消息队列中的消息后即刻从消息队列中销毁该消息
小结:
我编程中遇到的问题就属于第二种情况,刚开始从检查全局变量是否在退出时被释放时查起,接着检查了上述的情况1,发现进程还是在任务管理器中存在,
最后在调试程序中发现向GetMessage 所在的线程发送了一次某个消息,处理完后发现GetMessage 始终还能继续接收该消息[按理接收一次后下次GetMessage
就不会再收到该消息了],所有怀疑是该消息在处理完后没有被销毁,始终存留在消息队列中,导致GetMessage 不停从消息队列中提取该消息。 经过确认发现,
是将该函数的最后一个参数设置为NULL 引起, 改为PM_REMOVE后问题解决
相关文章推荐
- mac osx下虚拟主机配置
- C#将内容附带的html标签去掉转成纯文本方法
- Class.forName和ClassLoader.loadClass的比较
- SPRING IN ACTION 第4版笔记-第七章Advanced Spring MVC-001- DispatcherServlet的高级配置(ServletRegistration.Dynamic、WebApplicationInitializer)
- POI导出大量数据的简单解决方案(附源码)
- jsp中通过部署标识符方式配置filter、listener、servlet
- 快速排序
- dedeCMS自定义模型字段内页和首页调用方法
- Hust oj 2019 n! problem II(大数阶乘)
- js将iframe中控件的值传到主页面控件中的实现方法
- 全排列 hdoj1027
- io流笔记第四发用字符流读写
- Web缓存基础:术语、HTTP报头和缓存策略
- iOS 获取视频的任意一帧
- 花样ProgressBar
- Android内存优化—SparseArray和ArrayMap
- Dijkstra算法
- poj2112 二分+floyd+最大流 好题
- iOS - Swift - 语法糖
- Python基础记录