我在我的.NET 3.5 C# WinForms应用程序中有一个类,该类有五个方法。每个方法都使用不同的C++ COM接口集合。
在清理这些COM对象时,我使用Marshal.FinalReleaseCOMObject
。这段代码在这个.NET平台上可以正常工作,没有任何问题。
但是当我将这个应用程序移植到.NET 4.0时,在其中一个方法的一行代码处,我从ICOMInterface1
转换为ICOMInterface2
时,开始出现这个错误:
ICOMInterface1 myVar= obj as ICOMInterface2;
已从其基础 RCW 中分离的 COM 对象无法使用。
如果我删除使用 Marshal.FinalReleaseCOMObject
的行,我就不会遇到这个错误。
我错过了什么?在 .NET 4.0 平台上如何清理这些非托管的 COM 对象?