释放COM对象

时间:2012-09-26 07:11:44

标签: c# com

我在Visual Studio项目中向一些COM库添加了一个引用。现在,当我在一个方法中创建和对象时,当程序离开该方法时,这个COM对象会自动释放吗?或者我应该总是手动释放这些对象吗? (ReleaseComObject或FinalReleaseComObject?)。

2 个答案:

答案 0 :(得分:3)

肯定不会自动完成,在某些情况下这样做会很危险(通过致电Marshal.ReleaseComObjectas described in this blog post

对于In-Proc COM对象,通常根本不需要释放COM对象。

对于Out-Proc COM对象,释放它们非常重要,以防止Office apps failing to shut down after automation from a .NET client等问题。

在这种情况下,我会按照上述链接博客文章中的建议进行操作:

  

如果您以作用域,单线程方式使用COM对象,则可以在完成后对该对象安全地调用ReleaseComObject。

     

但是如果您在应用程序中(或在同一进程中的其他应用程序中)使用来自多个位置或多个线程的COM对象,则不应调用ReleaseComObject

答案 1 :(得分:2)