C# 释放COM对象

C# 释放COM对象,c#,com,C#,Com,我在VisualStudio项目中向某个COM库添加了一个引用。现在,当我在一个方法中创建和对象时,当程序离开该方法时,这个COM对象会自动释放吗?或者我应该总是手动释放这些对象吗?(ReleaseComObject还是FinalReleaseComObject?。您可以使用Marshal.ReleaseComObject: 这当然不是自动完成的,在某些情况下,这样做可能很危险(通过调用Marshal.ReleaseComObject) 对于进程内的COM对象,通常根本不需要释放COM对象 对于

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

您可以使用Marshal.ReleaseComObject:

这当然不是自动完成的,在某些情况下,这样做可能很危险(通过调用
Marshal.ReleaseComObject

对于进程内的COM对象,通常根本不需要释放COM对象

对于Out-Proc-COM对象,重要的是释放它们,以防止出现以下问题:

在这种情况下,我会遵循上面链接的博客帖子中的建议:

如果您正在以范围限定的单线程方式使用COM对象,那么在使用完该对象后,您可以安全地调用该对象上的ReleaseComObject

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


在这方面还有更多的空闲时间进行调查,并且要有耐心,因为这些文章都很难读,也很枯燥,比如