我有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/