【问题标题】:Does a wrapper class calling a COM component through C# need to implement the Dispose pattern?通过 C# 调用 COM 组件的包装类是否需要实现 Dispose 模式?
【发布时间】:2009-10-13 09:54:40
【问题描述】:

我有一个用 c# 编写的类,它充当 COM 组件的包装器。 COM 组件是早期绑定的,RCW 已由 Visual Studio 生成。我应该在我的包装类中实现一个 dispose 模式来清理 COM 引用,还是应该让 GC 处理它,因为它已经有一个 RCW?

【问题讨论】:

    标签: c# com dispose rcw


    【解决方案1】:

    很少需要实施 Dispose,但通常有充分的理由这样做。

    如果 COM 对象代表需要快速释放的重要资源,那么这可能是实施 Dispose 的好理由。

    在你的 dispose 方法中你可以这样做:-

     System.Runtime.InteropServices.Marshal.ReleaseComObject(myRCW);
    

    因此处理你的类将立即释放 COM 对象。

    【讨论】:

    • 这让我想知道为什么 RCW 没有实现 Dispose 模式,这似乎是正确的做法。
    猜你喜欢
    • 2010-11-14
    • 2012-03-20
    • 2016-06-25
    • 1970-01-01
    • 2012-11-10
    • 1970-01-01
    • 2011-01-05
    • 2011-03-08
    • 1970-01-01
    相关资源
    最近更新 更多