我有这个问题:
从Managed C++
开始,我使用C#
DLL
我注册了delegate
中定义的Managed C++
。 C#
库执行此delegate
,在其中,它会引发native exception
。在调试模式下,try/catch
已执行,但在发布模式下则不会执行。但在同一场景中,如果100%托管代码抛出异常,我可以抓住它。
这是我正在使用的代码:
Managed C++
:
class CNativeClass
{
public:
int one;
}
// This C method is registred like Delegate in C#
void OnMsgReceived(ManagedObjectInCSharp^ obj)
{
CNativeClass* pelota;
pelota->one = 0; // <-- This procude a NullPointerException
Console::WriteLine(L"OnMsgReceived");
}
我的C#
使用delegate
执行此try/catch
。在调试中可以,但在发布中,它不是。
//But if I defined the method like this:
void OnMsgReceived(ManagedObjectInCSharp^ obj)
{
try
{
CNativeClass* pelota;
pelota->one = 0; // <-- This procude a NullPointerException
Console::WriteLine(L"OnMsgReceived");
}
catch(const char* str)
{
}
}
我的C#
在发布模式下捕获异常。
答案 0 :(得分:0)
好吧,也许这是一个很长的镜头,但尝试将此属性添加到您的C#方法中:
[System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptions]