在C+中处理C#异常+/CLI 我有一个巧妙的组合,C,C++,CLI和本地C++代码。简言之,我所拥有的: 第三方托管的应用程序,即VisualStudio2010进程 此进程加载的C++/CLI dll,即 一种C#程序集,其中包含一个Windows.Froms.Form类,由dll显示

在C+中处理C#异常+/CLI 我有一个巧妙的组合,C,C++,CLI和本地C++代码。简言之,我所拥有的: 第三方托管的应用程序,即VisualStudio2010进程 此进程加载的C++/CLI dll,即 一种C#程序集,其中包含一个Windows.Froms.Form类,由dll显示,c#,c++,visual-studio-2010,exception-handling,c++-cli,C#,C++,Visual Studio 2010,Exception Handling,C++ Cli,我使用ShowDialog方法从C++/CLI dll显示我的C#表单: System::Reflection::Assembly^ GUI = System::Reflection::Assembly::LoadFrom("MyCppDll.dll"); Type^ FormMain = GUI->GetType("MyCsNamespace.FormMain"); MethodInfo^ ShowDialog = FormMain->GetMethod("ShowDialog",

我使用
ShowDialog
方法从C++/CLI dll显示我的C#表单:

System::Reflection::Assembly^ GUI = System::Reflection::Assembly::LoadFrom("MyCppDll.dll");
Type^ FormMain = GUI->GetType("MyCsNamespace.FormMain");
MethodInfo^ ShowDialog = FormMain->GetMethod("ShowDialog", gcnew array<Type^>{});
System::Object^ form = System::Activator::CreateInstance(FormMain, args);
ShowDialog->Invoke(form, nullptr);
System::Reflection::Assembly^GUI=System::Reflection::Assembly::LoadFrom(“MyCppDll.dll”);
键入^FormMain=GUI->GetType(“MyCsNamespace.FormMain”);
MethodInfo^ShowDialog=FormMain->GetMethod(“ShowDialog”,gcnew数组{});
System::Object^form=System::Activator::CreateInstance(FormMain,args);
ShowDialog->Invoke(表单,nullptr);
除了我不知道如何处理表单执行期间可能抛出的异常之外,所有这些都可以正常工作。我希望
ShowDialog->Invoke
调用只抛出这些异常,但事实并非如此

我尝试在C++中设置<代码> AppDeave::UnWord命令> <代码>处理程序,但是它没有被触发。奇怪的是,我试图将其设置为C#,但也没有触发


这样,在这种情况下,如何处理C++中的异常?我完全控制了C++和C代码,但是主机应用程序关闭了。

<代码>显示对话> >调用< /Cord>将抛出TaveVoCurcExpCur例外;此操作的内部异常将是表单抛出的异常。

您完全正确!我被我用来模仿VisualStudio作为主机进程的启动器应用程序愚弄了。在这种情况下,出于某种原因,在发布配置中,我得到了这个错误对话框:知道为什么吗?