【发布时间】:2009-10-13 09:54:40
【问题描述】:
我有一个用 c# 编写的类,它充当 COM 组件的包装器。 COM 组件是早期绑定的,RCW 已由 Visual Studio 生成。我应该在我的包装类中实现一个 dispose 模式来清理 COM 引用,还是应该让 GC 处理它,因为它已经有一个 RCW?
【问题讨论】:
我有一个用 c# 编写的类,它充当 COM 组件的包装器。 COM 组件是早期绑定的,RCW 已由 Visual Studio 生成。我应该在我的包装类中实现一个 dispose 模式来清理 COM 引用,还是应该让 GC 处理它,因为它已经有一个 RCW?
【问题讨论】:
很少需要实施 Dispose,但通常有充分的理由这样做。
如果 COM 对象代表需要快速释放的重要资源,那么这可能是实施 Dispose 的好理由。
在你的 dispose 方法中你可以这样做:-
System.Runtime.InteropServices.Marshal.ReleaseComObject(myRCW);
因此处理你的类将立即释放 COM 对象。
【讨论】: