首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

窗口退出了,进程管理那里还有进程在运行,该如何解决

2012-06-14 
窗口退出了,进程管理那里还有进程在运行窗口退出了,进程管理那里还有进程在运行,而且居高不下地占用了cpu。

窗口退出了,进程管理那里还有进程在运行
窗口退出了,进程管理那里还有进程在运行,而且居高不下地占用了cpu。

[解决办法]
看看程序是否发送了WM_QUIT消息:PostQuitMessage(0);
以及是否处理了这个消息。估计是没有退出主循环。。

关闭窗口,进程并不一定退出。。。可以打开任务管理器看看这个进程还在运行。

[解决办法]
直接调用exit(1);
如果还不能退出进程的话,参考下面:
《Windows编程启示录》
19.6 为什么有些进程在被终止之后还停留在任务管理器中
当某个进程结束时(可能是正常结束,也可能是因为调用了像TerminateProcess之类的函数),这个进程的用户态模块将被删除。但内核态模块只有在与线程相关的所有驱动程序执行完成之后才会被删除。
例如,如果某个线程正处于I/O操作中,那么将会给负责I/O的驱动程序发送一个内核信号来取消这个操作。
如果驱动程序的行为是良好的,那么它将清除与这个未完成I/O相关的一些信息并且释放线程。
如果驱动程序的行为是不好的(可能是因为驱动程序管理的硬件表现出奇怪的行为),那么可能需要花很长的时间来清除这个未完成的I/O。在这段时间里,驱动程序将不会释放这个线程(以及这个线程所在的进程)。实际的情况要更复杂一些,但这里的简单模型对于我们的讨论已经足够。
……
换句话说,如果你终止了某个进程后还能在任务管理器中看到这个进程,那么实际上这个进程已经停止运行了,只不过还有些残留的信息保留在系统中,只有当与这个进程相关的所有驱动程序都完成了清除操作并且指向这个进程的句柄都已经关闭,进程才会完全消失。

[解决办法]
是不是写成GetMessage(&msg, hwnd,0, 0)了。。

热点排行