我"继承"了我必须调试的遗留C#/ C++程序.当前的问题是.exe关闭程序后不会停止,即它仍然显示在任务管理器中.
这是一个问题,因为它不会让我重新启动程序,因为只能运行一个实例.经常杀死这个过程不起作用; 我被迫重启.
我的印象是,当主程序停止时,所有子线程也应该停止,但我可能是错的.
问:什么会导致.exe不能停止?
子线程不会自动停止,除非它们已被专门设置为后台线程(即with thread.IsBackground = true
).
编辑:当窗体关闭时,主线程也可能没有终止(即,其他代码设置为在关闭后运行,但未完成).
我发现使用调试器连接到正在运行的进程并按下暂停按钮很有用.之后,我将检查Threads窗口,看看堆栈跟踪为每个执行线程做了什么.默认情况下隐藏线程窗口.以下是有关如何显示和使用它的更多信息:
http://msdn.microsoft.com/en-us/library/w15yf86f.aspx