【发布时间】:2011-02-03 18:21:51
【问题描述】:
直到最近,我还相信 .NET 运行时在创建 runtime-callable wrapper 时只会将 COM 对象的引用计数增加 1,并且只会为任何给定的 COM 对象创建一个这样的运行时可调用包装器。
如果我没记错的话,上面的意思是 Marshal.FinalReleaseComObject 和 Marshal.ReleaseComObject 在实践中做同样的事情。
但是,今天我正在编写一些测试来验证我的代码是否正确释放了 COM 对象。我通过调用应该释放的对象并检查预期的InvalidComObjectException 来做到这一点。 事实证明,在 FinalReleaseComObject 之后会抛出异常,但在 ReleaseComObject 之后不会抛出异常。
这是否意味着 .NET 2.0 运行时可以保存多个对 COM 对象的引用?如果是这样,它什么时候这样做?
【问题讨论】:
标签: .net com com-interop rcw