我有VS2010,并在我的项目中添加了对COM库的引用,而VS在项目内部嵌入了一个主互操作。

如果我引用了COM库中的对象,并且希望在不等待GC的情况下快速处理它们,是否需要调用ReleaseComObject?

最佳答案

Marshal.ReleaseComObject提供了一种从托管代码中正在使用它的任何地方立即删除对该COM对象的引用的方法(因为它从保存它的RCW中释放了底层IUnknown)。

正如汉斯所指出的那样,通常正确的做法是简单地使对象为空,以允许CLR和GC在适当的时候破坏COM对象。

但是,在需要立即采取措施的情况下(COM对象拥有昂贵/稀缺的资源,或者在关机期间排序非常复杂),调用ReleaseComObject是正确的选择。

马丁

关于com - 执行COM时是否需要在C#4中调用Marshal.ReleaseComObject?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6603000/

10-15 07:18