2

我有一个 .net C# 控制台应用程序(不是服务)。它基本上连接到一个 web 服务,获取一些 xml 文件,将这些文件复制到驱动器上的几个位置,验证 xml,处理它并将这些对象发送到另一个 web 服务。

但是,当 main 方法存在(并且控制台窗口关闭)时,我仍然可以在任务管理器中看到该进程。

我尝试尝试在 main 方法中包含所有内容,以捕获 ApplicationException,但我仍然对应用程序崩溃的原因一无所知,即使一切正常,否则...

有人知道从哪里开始检查有缺陷的部分吗?

4

5 回答 5

4

查看线程使用情况和异步调用。

于 2008-10-16T16:25:23.123 回答
2

如果控制台窗口已关闭,则该进程仍在运行似乎确实很奇怪。您可以在 Visual Studio 调试器中附加到它吗?(显然是调试版本。)

您确定这不是仍在执行的先前运行吗?

于 2008-10-16T16:32:57.773 回答
2

如果您正在调试应用程序,那么我已经看到 Visual Studio 创建一个主机 exe 的情况,该主机 exe 的名称与您的应用程序类似,最后带有 .vshost.exe。它使用该控制您的应用程序以获得更好的调试体验。在您完成程序调试后,此主机 exe 会一直存在,以便它等待并准备好,以便它可以快速启动新的调试会话。

你确定不是这个exe在闲逛吗?

如果你在没有调试的情况下运行你的应用程序,那么它仍然会挂起吗?

于 2008-10-16T16:56:49.427 回答
1

您几乎可以肯定在您的应用程序中有一个未终止的线程。正如乔恩所说,附加调试器并查看哪些线程是活动的。

于 2008-10-16T16:47:21.427 回答
1

正如所有其他答案所暗示的那样,您可能确实有一个挥之不去的线程,但不一定是您明确创建的线程,您可能需要在一个或多个对象上调用 Dispose 或类似的东西

于 2008-10-16T16:52:51.230 回答