判断COM对象的引用计数是否达到0的一种方法是尝试访问其中一个成员并捕获生成的InvalidComObjectException,这不是很优雅,并且似乎不能很好地适应。另一种方法是调用Marshal.ReleaseComObject并检查结果,但这需要将Com对象的引用计数减少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
除此之外,看起来你被卡住了。 希望对你有帮助。