关闭程序,却还有线程未退出
问题描述
- 通过点击程序的方式运行时,关闭程序后,在任务管理器中却还能找到该程序的线程
- 通过VS来运行程序,关闭程序后,VS显示调试器还在执行。
- 这有什么问题呢? 程序没关掉,就会导致资源未释放。这样会导致再次运行程序时,程序无法正常执行(无法启动,或无法访问需要的资源)
解决办法
- 第一步: 中断程序,
顶部菜单
-全部中断
- 第二步: 找到程序执行到哪个代码段了。
- 打开线程窗口,
顶部菜单
-窗口
-线程
这时候,发现程序停在一个dll或pdb处。我们需要进入代码,按F10
单步执行很多次最终会进入到代码的,不推荐。现在推荐一种简单的方法,看线程窗口可以看出来最近执行的有代码的线程,点击它就可以进去了
或者注意看诊断工具
-事件
,如下图。可以看到当前执行位置,往上翻可以找到最近的执行代码。 - 进入后,给代码打个断点,按
F5
自然就会运行到这里停下了。
- 打开线程窗口,
- 第三步: 单步执行,找到问题所在。个人经验,一般是有循环还在执行,这种情况,可以通过一个bool值来参与循环条件,只要在关闭程序时,改变这个bool值就可以控制程序的退出了