【问题标题】:Releasing COM objects释放 COM 对象
【发布时间】:2012-09-17 18:21:49
【问题描述】:

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

【问题讨论】:

标签: c# com


【解决方案1】:

这当然不是自动完成的,在某些情况下这样做可能很危险(通过调用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

【讨论】:

    【解决方案2】:
    猜你喜欢
    • 2015-09-25
    • 2015-07-09
    • 1970-01-01
    • 1970-01-01
    • 2012-03-05
    • 2014-02-14
    • 1970-01-01
    • 2013-03-21
    相关资源
    最近更新 更多