我的 .NET 3.5 C# WinForms 应用程序中有一个类,它有五个方法。每种方法都使用不同的 C++ COM 接口集。用于Marshal.FinalReleaseCOMObject
清理这些 COM 对象。此代码在此 .NET 平台上运行良好,没有任何问题。但是,当我将此应用程序移至 .NET 4.0 时,我开始在这些方法之一中将变量从ICOMInterface1
to 转换为的行中出现此错误ICOMInterface2
,即:
ICOMInterface1 myVar= obj as ICOMInterface2;
无法使用已与其底层 RCW 分离的 COM 对象。
如果我删除正在使用的行Marshal.FinalReleaseCOMObject
,我不会收到此错误。
我在这里想念什么?以及如何从 .NET 4.0 平台的内存中清除这些非托管 COM 对象?