优雅地处理通过 P/Invoke [DllImport] 访问的托管端的非托管 DLL 崩溃

Gracefully handle an unmanaged DLL crash on Managed side that is accessed via P/Invoke [DllImport]

我有一个 C# 应用程序,它引用了一个 CLI/C++ 程序集,它通过 headers ( [DllImport] 属性)。

一切都很好,即使不是有点复杂。 所有这些都存在的项目出于测试目的围绕着这个最终的非托管 DLL,因此它的稳定性是不确定的。

上面的当前系统有什么方法可以在非托管 DLL 崩溃时不关闭 C# 和 cli/C++ 程序集?我不相信有,由于记忆 space mumbo jumbo,但谢天谢地,在很多情况下证明我错了。

我最终得到了一个完全独立的进程的看门狗应用程序。这将启动可以被坏 dll 关闭的应用程序,并且由于它有进程的句柄,它可以尝试各种方法来检测崩溃或关闭。