发生异常时,防止输出参数被封送

时间:2012-05-21 11:50:39

标签: c# .net exception interop marshalling

我们有一个C#程序,它调用C ++ DLL中的函数来实现真正的工作。这些函数具有输出参数,并且可能在出现问题时抛出异常。在互操作屏障上抛出异常似乎工作正常。我们遇到的问题是,显然,即使发生异常,封送程序也会尝试从函数中检索输出参数。在某些情况下,这些将没有正确的值(由于异常),导致进程崩溃,mscorlib.dll中存在访问冲突。

在完成任何工作之前,将所有输出参数初始化为有效值(例如null)当然是可能的。然而,忘记其中一个的惩罚是严厉的。

我们的分析是,当抛出异常时,封送程序也会运行,对吗?有办法防止这种情况吗?

TIA。

0 个答案:

没有答案
相关问题