【问题标题】:Method System.Runtime.InteopServices.Marshal.ReleaseCOMObject doesn't kill all object方法 System.Runtime.InteopServices.Marshal.ReleaseCOMObject 不会杀死所有对象
【发布时间】:2011-07-12 00:59:30
【问题描述】:

为什么注册到 COM+ 组件的 dll 的“激活计数”等于 1,即使调用者进程(.net 2.0 程序集)总是使用方法 System.Runtime.InteopServices.Marshal.ReleaseCOMObject()

如果计数器大于 1,ReleaseCOMObject 确实会停用对象,但在超时到期之前始终保持一个对象处于活动状态。

【问题讨论】:

  • 很确定 com 引用计数必须为 0 才能释放它们?

标签: .net com com-interop


【解决方案1】:

这与 SO 上的另一个问题非常相似

Why use FinalReleaseComObject instead of ReleaseComObject?

通常剩余的引用计数表明有另一个托管对象持有尚未被垃圾回收的引用。 (通常是 RCW)

【讨论】:

    猜你喜欢
    • 2011-09-27
    • 2016-04-17
    • 2015-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    • 2013-01-05
    相关资源
    最近更新 更多