线程'<no name =“”>'(0xb24)已退出,代码为0(0x0)</no>

时间:2013-01-29 03:07:07

标签: visual-studio-2010

每当我尝试运行程序时,

如果我必须在

中运行“frmphonebook”
Application.Run(new frmphonebook());

我键入了但是当我运行它时会运行另一个表单,它会发生在每个表单上,并且显示输出为

The thread 'vshost.RunParkingWindow' (0x63c) has exited with code 0 (0x0).

The thread '<No Name>' (0xb24) has exited with code 0 (0x0).

如何解决这个问题?

5 个答案:

答案 0 :(得分:25)

您可以为线程命名,它也可以帮助您进行调试...... 但是在许多应用程序中,线程是隐式创建的,您无法控制名称。 所以这不是错误信息。代码0表示一切都按计划进行。任何非零代码通常都表示错误。

编辑:您还可以禁用这些消息的显示,在调试时,右键单击输出,然后选择您想要查看的内容。 enter image description here

答案 1 :(得分:15)

如果一个线程退出代码0,它就会成功运行。在Codeproject上是Beginners-Guide-to-Threading 这个article on threading也可能有所帮助。这question on so could also be of use。一个list of System Error Codes

答案 2 :(得分:13)

您将学习使用调试器的一件事是,您将看到我们可能称之为系统的“软白色下腹部”(暗指鳄鱼的解剖结构):所有类型的DLL被加载和卸载, “帮助”线程的启动和停止有点复杂的安排......等等。

对于经验较少的用户来说,看到所有这些消息可能会分散注意力。但是,随着时间的推移,您将会明白调试器只是真实而冗长。它为您显示的详细信息可能与您的调试过程无关,但它无法“知道”;它只显示事实信息,你必须弄清楚什么是相关的,什么不是。

至于Windows Forms应用程序,我自己注意到似乎有几个“帮助程序”线程,通常没有名称,或者(正如我在调试时经常看到的那样),它们被命名为“vshost.RunParkingWindow” ”。通常,您必须相信系统正在代表您创建线程,以及您可能自己创建的任何线程。正如其他人所建议的那样,给自己的线程提供有意义的名称,这样你就可以将它们与系统的线程区分开来。

您可以通过在UI更新代码中的某个位置放置断点来进一步了解Windows窗体应用程序的多线程结构,并在它命中时,使用Debug / Windows / Threads显示所有运行的线程的视图你的过程空间。我想,你会惊讶地发现有多少人!尝试在您的应用中逐个创建和.Show() - 几个表单。我想你会看到每个.Show()操作都会创建一个新窗口,并且有一个窗口的几个支持线程。

您还可以在调试窗口中看到如下消息:“System.Windows.Forms.dll中出现'System.ObjectDisposedException'类型的第一次机会异常”。很多时候,系统异常处理程序会代表您执行合理的默认操作。此消息在调试器中没有中断显示,表明某些默认处理程序会为您处理此异常。

对Windows表单应用程序之类的系统的支持有点复杂,使您的实现更容易和更简单。运行调试器时,您将看到其中一些详细信息。随着时间的推移,您将了解什么是“通常”以及什么是问题的指示。

答案 3 :(得分:0)

检查您的网络应用中是否有某些文件无法访问。对于我的情况,我的图表控件创建了一个只读的文本文件,并引发了异常。删除了文件和文件夹并瞧

答案 4 :(得分:0)

我找到了我认为的解决方案。...我的Visual Studio转到项目>属性>链接器>系统,查找“子系统”行,然后单击向下箭头,然后更改为Console(.... words .... )。

它为我工作!享受”