1

使用 C# 的 System.Diagnostics.Process 对象,我启动了一个非托管 exe,然后再启动另一个非托管 exe。

第二个 exe 导致我希望我的应用程序忽略但似乎无法忽略的未处理异常。

我在启动第一个进程时使用了 try/catch 语句,但它似乎没有捕获第二个进程引发的异常。当异常发生时,即时调试器会通知我并暂停我的应用程序,直到我手动单击“是”我要调试或“否”。然后我的申请继续进行。

JIT 调试器没有引发异常的 2ndprocess.exe 的源代码。所以,它没有告诉我异常是什么。我真的不在乎异常是什么,我只想知道如何捕获它并忽略它,这样我的应用程序就不会被它停止。到异常发生时,无论如何工作已经完成。

谁能提供一些见解?

4

2 回答 2

1

由于您使用 process.start 来实际启动应用程序,因此应用程序会创建一个单独的应用程序域。我认为不可能从该应用程序中捕获异常,因为由于该过程失败,JIT 对话框很可能会出现。

虽然不是解决方案,但您可以在需要时停止对话,但这有其自身的问题。

于 2010-01-27T21:28:43.227 回答
1

您应该正确处理第二个可执行文件中的异常。您的主程序不会捕获异常,因为它没有抛出异常,而是正在执行某些异常。

编辑:

您是否有权访问第二个进程的来源(引发异常的那个)?您的应用程序不应该只是崩溃。如果异常情况在第二个过程中得到正确处理,您的主应用程序中就不会出现此问题。

编辑2:

由于您可以访问源代码(开源),因此我建议您修复该错误。这将从两个方面帮助您:

1)你的程序最终会工作。
2) 你可以说你为一个开源项目做出了贡献。

而且,作为一项特殊奖励,您可以帮助您经常使用的项目。双赢

于 2010-01-27T21:29:55.123 回答