所有线程终止后,C#进程仍然存在

时间:2011-01-17 15:01:22

标签: c# multithreading termination

我有一个多线程C#“控制台”应用程序,有很多线程完成。我的所有线程退出。应用程序正常退出的90%的时间。但是,有10%的时间我的应用程序副本仍然存在:控制台仍处于打开状态。

我通过Visual Studio 2010附加到这个并使用break来中断它,并显示两个“空”堆栈帧:一个用于Main,一个用于我的应用程序创建的线程。堆栈上也没有任何东西。如果我点击这些线程中的任何一个,Visual Studio会说“源代码不可用于该线程”,并且它提供了“已解密的代码视图”链接。我点击它,它说“这个线程没有反汇编代码”。

任何想法我可能做错了什么?

1 个答案:

答案 0 :(得分:2)

你的代码是否会在额外的几分钟后关闭。可能是某些.net帮助器或垃圾收集线程仍在运行。这可能需要一些额外的时间。

您是在运行调试版本还是发布版本,并且您确定该流程不是那些为了设计目的而继续运行的Visual Studio托管流程之一。