判断 COM 对象的引用计数是否已达到 0 的一种方法是尝试访问其成员之一并捕获生成的 InvalidComObjectException,这不是很优雅,而且似乎不太适合自己。另一种方法是调用 Marshal.ReleaseComObject 并检查结果,但这需要您将 Com 对象的引用计数减少 1。
有没有直接的方法来告诉?
判断 COM 对象的引用计数是否已达到 0 的一种方法是尝试访问其成员之一并捕获生成的 InvalidComObjectException,这不是很优雅,而且似乎不太适合自己。另一种方法是调用 Marshal.ReleaseComObject 并检查结果,但这需要您将 Com 对象的引用计数减少 1。
有没有直接的方法来告诉?
在 .NET 论坛上,这个问题之前已经提出过。
问:有什么方法可以在不递减的情况下获得内部引用计数?
A:没有可以提供这种服务的类库方法。
问:如果不递减就无法获得内部引用计数,有没有办法在调用后增加它的计数Marshal.ReleaseComObject()
?
A:同样,没有提供此服务的类库方法。
他们确实有一种尴尬的方式来实现这一点,作为从您的 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
除此之外,看起来你被卡住了。希望对您有所帮助。