18

例如,每当我尝试运行程序时,

如果我必须运行“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).

如何解决这个问题?

4

5 回答 5

28

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

编辑:您还可以禁用这些消息的显示,在调试时,右键单击输出,然后选择您想看到的内容。 在此处输入图像描述

于 2013-09-10T08:22:58.573 回答
15

如果线程以代码 0 退出,则它运行成功。On Codeproject is a Beginners-Guide-to-Threading 这篇关于线程的文章也可能会有所帮助。所以这个问题也可能有用系统错误代码列表

于 2013-02-26T22:10:48.787 回答
13

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

看到所有这些消息可能会分散经验不足的用户的注意力。但是,随着时间的推移,您会明白调试器只是真实而冗长。它为您显示的详细信息可能与您的调试过程并不真正相关,但它无法“知道”这一点;它只是显示事实信息,你必须理清哪些是相关的,哪些是不相关的。

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

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

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

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

于 2014-08-17T13:39:13.950 回答
0

检查您的 Web 应用程序中是否有一些文件已被呈现为无法访问。就我而言,我的图表控件创建了一个只读的文本文件,并引发了异常。删除了文件和文件夹,瞧

于 2017-11-25T12:45:20.703 回答
0

我找到了我认为的解决方案....我在 Visual Studio 中转到项目 > 属性 > 链接器 > 系统查找子系统行,然后单击向下箭头并更改为控制台(....单词....)。

它对我有用!请享用”

于 2019-07-30T04:48:38.173 回答