如何在 C# 中检测 DLL 的进程退出

rsa*_*tos 5 c# dll process exit

我有一个 WPF 应用程序,它正在调用本机 DLL(用 C++ 编写)内的函数。.DLL 中的此函数有时会执行进程退出,从而终止 WPF 应用程序。

例子:

WPF App:
.....
[DllImport("native.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
private static extern void NativeMethod();
.....
void CallFunction()
{
  //Call the native function
  NativeMethod();
}
....
Run Code Online (Sandbox Code Playgroud)

NativeMethod 内部有一个出口,我无法更改 .dll 的源代码。有人知道如何从 .NET 代码中捕获 DLL 中的此退出吗?

提前致谢,

rsa*_*tos 4

AppDomain.ProcessExitOk,使用 AppDomain 的问题是它们只适用于 .NET 程序集 :( 所以我必须创建一个通过 P/Invoke 加载本机 DLL 的程序集。一旦有了这个,我就可以在不同的 AppDomin 中加载程序集并调用本机 .dll 的函数抛出托管 .dll。我从 AppDomain 捕获 AppDomain.ProcessExit 事件,并且可以捕获退出;)。

感谢 aiampogi 的想法;)