判断 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
除此之外,看起来你被卡住了。
希望能帮到你。
关于.net - 如何在不依赖异常的情况下判断 COM 对象是否已与其底层 RCW 分离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20084524/