繁体   English   中英

如何隔离.Net进程中的非托管代码崩溃

[英]How do I isolate unmanaged code crash in .Net Process

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

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

先感谢您!

您是否尝试过RuntimeCompatibilityAttribute.WrapNonExceptionThrows

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

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

使用单独的AppDomain最有可能无法使用,具体取决于为什么首先要完全杀死您的应用程序,因为未处理的异常仍会终止整个过程,并且由于您尚未捕获到异常,因此当前未处理您的异常。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM