在非托管回调期间使用的委托内抛出异常的影响或未察觉到的后果是什么?这里是我的情况:在非托管回调委托中抛出异常的影响
非托管C:
int return_callback_val(int (*callback)(void))
{
return callback();
}
托管C#:
[DllImport("MyDll.dll")]
static extern int return_callback_val(IntPtr callback);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
delegate int CallbackDelegate();
int Callback()
{
throw new Exception();
}
void Main()
{
CallbackDelegate delegate = new CallbackDelegate(Callback);
IntPtr callback = Marshal.GetFunctionPointerForDelegate(delegate);
int returnedVal = return_callback_val(callback);
}
当你尝试时会发生什么? –