如何在不依赖异常的情况下判断COM对象是否已与其基础RCW分离?

时间:2013-11-19 23:37:45

标签: .net com com-interop rcw

判断COM对象的引用计数是否达到0的一种方法是尝试访问其中一个成员并捕获生成的InvalidComObjectException,这不是很优雅,并且似乎不能很好地适应。另一种方法是调用Marshal.ReleaseComObject并检查结果,但这需要将Com对象的引用计数减少1。

有简单明了的方法吗?

1 个答案:

答案 0 :(得分:2)

在.NET论坛上,此问题已经提出过。

问:有没有办法获得内部参考计数而不减少它?

答:没有可以提供此服务的类库方法。

问:如果在不递减内部引用计数的情况下无法获取内部引用计数,在调用Marshal.ReleaseComObject()后是否有任何方法可以增加其计数?

答:同样,没有提供此服务的类库方法。

他们确实有一种笨拙的方法来实现这一点,作为从COM服务器导出的全局API的解决方法 详情请见http://social.msdn.microsoft.com/Forums/vstudio/en-US/9de651e0-ad3c-44be-8855-3dc13673ac73/how-can-i-get-the-internal-marshaling-count-of-an-rcw-systemcomobject?forum=clr

除此之外,看起来你被卡住了。 希望对你有帮助。