我有 VS2010 并向我的项目添加了对 COM 库的引用,并且 VS 在项目中嵌入了主要互操作。
如果我引用COM库中的对象并且我想快速处理它们而不等待GC,是否需要调用ReleaseComObject?
Marshal.ReleaseComObject 提供了一种方法,可以立即从托管代码中使用该 COM 对象的任何位置删除对该 COM 对象的引用(因为它从持有该对象的 RCW 中释放了底层 IUnknown)。
正如 Hans 所指出的,通常正确的做法是简单地将对象置为 null,以允许 CLR 和 GC 在适当的时间销毁 COM 对象。
然而,在需要立即采取行动的情况下(COM 对象持有昂贵/稀缺的资源,或者可能在关闭期间排序非常复杂),调用 ReleaseComObject 可能是正确的做法。
马丁