【BUG之旅】程序不能退出问题
来源:互联网 发布:尚观云计算 编辑:程序博客网 时间:2024/06/05 01:11
窗口A创建两个线程T1,T2,在OnClose函数中调用了TerminateThread结束这两个线程,发现最后程序没有正常返回。最后定为是这个函数没有正常结束线程。
之后改用设定标志位让进程自己退出的方法,在软件中产生了死锁。
//A线程 其中有一部分代码
while(!bExit)
{
......
UpdateWindow();
}
bExitSuccess = TRUE;
//主线程中设定A的退出标志
bExit = TRUE;
while(!bExitSuccess);
会有某一个时刻,bEixt = TRUE时运行到UpdateWindow();这里UpdateWindow();是一个阻塞函数,A等待主线程处理WM_PAIT消息。而现在主线程正在处理WM_CLOSE消息,导致死锁。因此可以把绘图的部分封装到一个Draw函数中,而不用OnPaint()进行重绘,从而绕开了消息机制
解决了死锁问题。就可以直接用WaitForSingleObject来等待线程返回,这样更加优雅点
0 0
- 【BUG之旅】程序不能退出问题
- 微信小程序bug之------视频全屏退出bug
- 如何解决程序退出重起后不能绑定端口的问题?
- 如何解决程序退出重启后不能绑定端口的问题?
- QT程序退出问题
- PeekMessage 导致程序不能正常退出 CPU100%
- paip. 解决java程序不能自动退出
- 问题解决——程序不能完全退出
- menu里的退出总是不能直接退出程序
- MFC MDI程序的退出菜单突然不能退出了
- BUG之旅-MessageBox,Domodal不能显示对话框
- CFileDialog程序异常退出问题
- Android退出程序问题综述
- Qt程序退出断言问题
- 切换输入法,程序退出问题
- vc GetMessage函数不能退出进程问题
- openGL不能退出glutMainLoop的问题
- Android之退出程序思考
- POJ 3349 Snowflake Snow Snowflakes (hash)
- Linux_利用fdisk建立swap分区
- Mac OS 下编译安装Lammps
- gdb + nm 调试php扩展
- 图片缓存
- 【BUG之旅】程序不能退出问题
- Solr_Cloud中的文件及collection管理
- 无题
- Android快速开发框架-AIO
- IT人的网站
- Linux 路由 (2)
- Ubuntu 12.04中文输入法的安装
- C编译器剖析_3.3 语法分析_C语言的外部声明(2)
- “C语言” 读书札记(六)之[Linux下C语言编程环境Make命令和Makefile]