【发布时间】:2012-04-23 23:38:16
【问题描述】:
我的 .NET 3.5 C# WinForms 应用程序中有一个类,它有五个方法。
每种方法都使用不同的 C++ COM 接口集。
我正在使用Marshal.FinalReleaseCOMObject 清理这些 COM 对象。此代码在此 .NET 平台上运行良好,没有任何问题。
但是,当我将此应用程序移至 .NET 4.0 时,我开始在其中一种方法中收到此错误,其中我将变量从 ICOMInterface1 转换为 ICOMInterface2,即:
ICOMInterface1 myVar= obj as ICOMInterface2;
已经与其底层 RCW 分离的 COM 对象不能被 用过。
如果我删除使用Marshal.FinalReleaseCOMObject 的行,我不会收到此错误。
我在这里缺少什么?以及如何从 .NET 4.0 平台的内存中清理这些非托管 COM 对象?
【问题讨论】:
标签: c# com com-callable-wrapper