在调试我的C#应用程序时,我注意到大量出现以下句子:
线程 - 已从代码0(0x0)退出。
应用程序继续工作,没有任何异常被捕获/无法处理。
该应用程序在Windows 7 64位上运行,并使用x86平台进行调试。
答案 0 :(得分:98)
这只是调试信息。您可以通过右键单击输出窗口并取消选中线程结束消息来关闭它。
http://msdn.microsoft.com/en-us/library/bs4c1wda.aspx
除了从应用程序中编程外,还有输出窗口 可以显示以下信息:
调试器已加载或卸载的模块。
引发的例外情况。
退出的流程。
退出的主题。
答案 1 :(得分:8)
嗯,应用程序可能有很多并行运行的线程。有些是由你运行的,编码器,有些是由框架类运行的(特别是如果你在GUI环境中)。
线程完成任务后,退出并停止存在。 在这里没有什么可担心的,你不应该在意。
答案 2 :(得分:5)
为了完成BlueM的接受答案, 你可以在这里停用它:
工具>选项>调试>一般输出设置>线程退出消息:关闭
答案 3 :(得分:4)
如果您的应用程序直接或间接使用线程(即在第三方库中的场景后面),完成后线程终止是绝对常见的......这基本上就是您描述的...调试器显示此消息...您可以将调试器配置为在不需要时显示此消息...
如果以上情况没有帮助,请提供更多详情,因为我不确定您面临的问题是什么......
答案 4 :(得分:1)
框架创建线程来支持您创建的每个窗口,例如,当您创建Form和.Show()时。当窗口关闭时,线程终止(即,它们退出)。
这是正常行为。但是,如果应用程序正在创建线程,并且有很多线程退出消息对应于这些线程(可以通过线程的名称来判断,通过在应用程序中给它们不同的名称),那么也许这是表示由于程序逻辑错误,应用程序创建线程时出现问题。
让原始海报让我们知道他/她发现的服务器崩溃问题是一个有趣的后续行动。我觉得它与此无关......但从发布的信息中很难说清楚。
答案 5 :(得分:1)
执行Linq查询会生成额外的线程。 当我尝试在即时窗口中执行使用Linq查询集合的代码时,由于调试器没有足够的可用线程,它经常拒绝运行。
正如其他人所说,线程在完成后退出是完全正常的。
答案 6 :(得分:0)
停止此错误,您必须执行以下简单步骤
然后使用快捷键Ctrl + f5运行代码
**否则,直接运行它仍会显示错误
答案 7 :(得分:-1)
我也遇到了这个问题,解决方法是:
我再次添加了此代码,并且我的程序正确运行:
Application.Run(new PayrollSystem());
//File name this code removed by me accidentally.