2012-11-01 54 views
1

我有C#,C++/CLI和本机C++代码的复杂组合。总之,我有什么:在C++/CLI中处理C#异常

  1. 第三方托管的应用程序,即Visual Studio 2010的过程
  2. A C++/CLI DLL是通过这个过程,即装,一个Evaluator Add-In
  3. AC

    :带有Windows.Froms.Form类在里面,这是由DLL

我显示我的C#形式从C++/CLI DLL与ShowDialog方法示出#组件210

所有的工作都很好,除了我不知道如何处理表单执行过程中可能抛出的异常。我希望ShowDialog->Invoke调用只是抛出这些异常,但事实并非如此。

我试着在C++中设置AppDomain::UnhandledException处理程序,但它没有被触发。奇怪的是,我试图用C#来设置它,但它也没有被触发。

那么在这种情况下,我该如何处理在C#汇编中抛出的C++ dll中的异常呢?我完全控制了C++和C#代码,但主机应用程序已关闭。

回答

2

ShowDialog->Invoke会抛出TargetInvocationException;这个InnerException将是表单抛出的异常。

+0

你完全正确!我被我用来模拟Visual Studio的启动程序作为宿主进程所愚弄。在这种情况下,出于某种原因,在发布配置中我得到了这个错误对话框:http://i.stack.imgur.com/M2PyO.png任何想法为什么? – Mikhail