Каковы последствия или неосознанные последствия выброса исключения внутри делегата, который используется во время неуправляемого обратного вызова? Вот моя ситуация:
Неуправляемый 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);
}