.net - 如何在不依赖异常的情况下判断 COM 对象是否已与其底层 RCW 分离?

标签 .net com com-interop rcw

判断 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/

相关文章:

.net - 有哪些字符串封装类可以同时指定其内容的含义和行为?

.net - 通过代码将域添加到 Azure 网站

c# - 使用 COM 互操作将 BSTR 从 C++ 编码到 C#

internet-explorer - 互联网浏览器 : Logging URLs to the Console with AutoIt

c# - 如何将 COM 对象包装在 native .NET 类中?

.net - 无法在经典 ASP/VBScript 页面中实例化 .Net COM 对象(错误 ASP 0177)

C# ADO.NET 参数化查询

.net - 你能解释一下 NHibernate 'proxy' 的基本含义吗?

c++ - 使用 C++ 从 32 位进程访问 64 位 dll

c# - 如何使用 ActiveXObject 从 JavaScript 创建我的 C# Com 类