121

While debugging my C# application I have noticed a large amount occurrences of the following sentence:

The thread -- has exited with code 0 (0x0).

The application continues to work and no exception is catched/unhanded.

The application is running on Windows 7 64bit and debugged with x86 platform.

4

8 回答 8

186

这只是调试消息。您可以通过右键单击输出窗口并取消选中来关闭它Thread Exit Messages

http://msdn.microsoft.com/en-us/library/bs4c1wda.aspx

除了从您的应用程序中编程外,“输出”窗口还可以显示以下信息:

  • 调试器已加载或卸载的模块。

  • 抛出的异常。

  • 退出的进程。

  • 退出的线程。

于 2012-09-13T16:18:47.110 回答
17

好吧,一个应用程序可能有很多并行运行的线程。有些是由您(编码员)运行的,有些是由框架类运行的(尤其是如果您在 GUI 环境中)。

当一个线程完成其任务时,它会退出并停止存在。即没有什么令人担忧的,你不应该关心。

于 2012-09-13T16:17:11.023 回答
12

为了完成 BlueM 接受的答案,您可以在此处停用它:

工具 > 选项 > 调试 > 常规输出设置 > 线程退出消息:关闭

于 2016-12-15T13:25:07.650 回答
7

如果您的应用程序直接或间接使用线程(即在第 3 方库中的幕后),线程完成后终止是绝对常见的......这基本上就是你所描述的......调试器显示此消息...如果您不想要它,您可以将调试器配置为不显示此消息...

如果上述方法没有帮助,请提供更多详细信息,因为我不确定您到底面临什么问题......

于 2012-09-13T16:16:45.293 回答
1

该框架创建线程来支持您创建的每个窗口,例如,当您创建一个 Form 并 .Show() 它时。当窗口关闭时,线程终止(即它们退出)。

这是正常行为。但是,如果应用程序正在创建线程,并且有很多与这些线程对应的线程退出消息(可以通过线程的名称来判断,通过在应用程序中给它们不同的名称),那么这可能表明存在问题由于程序逻辑错误,应用程序在不应该创建线程时创建线程。

让原始海报让我们知道他/她发现了有关服务器崩溃问题的信息,这将是一个有趣的后续行动。我觉得这与此无关……但从发布的信息中很难判断。

于 2014-08-17T13:47:42.323 回答
1

执行 Linq 查询会产生额外的线程。当我尝试在即时窗口中执行使用 Linq 查询集合的代码时,它经常拒绝运行,因为调试器没有足够的线程可用。

正如其他人所说,线程完成后退出是完全正常的。

于 2019-03-08T12:52:46.540 回答
-1

停止这个错误你必须按照这个简单的步骤

  1. 打开 Visual Studio
  2. 从顶部选择选项调试
  3. 选择选项
  4. 在调试下的选项选择调试中选择常规
  5. 在常规选择复选框“调试停止时自动关闭控制台”
  6. 保存

然后使用快捷键 Ctrl+f5 运行代码

**否则直接运行时它仍然显示错误

于 2020-11-30T06:33:32.463 回答
-5

我也遇到过这个问题,解决方法是:

  1. 打开解决方案探索
  2. 双击 Program.cs 文件

我再次添加了这段代码,我的程序运行准确:

Application.Run(new PayrollSystem()); 
//File name this code removed by me accidentally.
于 2020-01-30T10:57:48.843 回答