1

.Net 控制台应用程序依赖于 COM 对象,这些对象往往以非常不可预测的方式不时崩溃。应用程序完全无缘无故地关闭:没有日志,没有异常(catch块根本不起作用),没有事件日志,没有发生错误。

如何隔离本机崩溃?AppDomain 方法会拯救我吗?

先感谢您!

4

1 回答 1

1

您是否尝试过RuntimeCompatibilityAttribute.WrapNonExceptionThrows

或者,没有类型的 catch 块应该捕获不符合 CLS 的异常,即:

try
{
    // Code here.
    // Maybe a COM call here.
}
catch(Exception ex)
{
    // Managed exceptions.
}
catch
{
    // non CLS-compliant exceptions.
}

使用单独的 AppDomain 很可能无法正常工作,具体取决于您的应用程序首先被终止的原因,因为未处理的异常仍会终止整个进程,并且当前您的异常未处理,因为您尚未捕获它。

或者,您可以在单独的进程中使用 COM 对象,并在两者之间使用进程间通信。这会将有问题的代码隔离到它自己的进程中,然后您可以根据需要重新启动/使用,而不会杀死您的主进程。

于 2011-11-18T09:48:17.233 回答