gpt4 book ai didi

.net - 如何隔离 .Net Process 中的非托管代码崩溃

转载 作者:行者123 更新时间:2023-12-03 16:02:04 25 4
gpt4 key购买 nike

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

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

先感谢您!

最佳答案

你试过RuntimeCompatibilityAttribute.WrapNonExceptionThrows ?

或者,没有类型的 catch block 应该捕获 non CLS-compliant exceptions , IE:

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

使用单独的 AppDomain 很可能无法正常工作,具体取决于您的应用程序首先被杀死的原因 unhandled exceptions will still kill the entire process。目前你的异常没有被处理,因为你没有捕获它。

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

关于.net - 如何隔离 .Net Process 中的非托管代码崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8180343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com