运行时可调用包装器 (RCW) 范围 - 进程还是应用程序域?

2024-01-31

引用非托管 COM 对象时,运行时可调用包装器 (RCW) 的范围是什么?根据文档:

运行时恰好创建一个 RCW 对于每个 COM 对象,无论 存在的参考文献数量 那个物体。

如果我必须“猜测” - 这个解释应该意味着“每个进程一个”,但真的是这样吗?任何额外的文档都将非常受欢迎。

我的应用程序在其自己的应用程序域中运行(它是 Outlook 插件),我想知道如果我在循环中使用 Marshal.ReleaseComObject(x) 直到其计数达到 0(按照建议)会发生什么。它会释放来自其他插件的引用(在同一 Outlook 进程中的其他应用程序域中运行)吗?

编辑:完美 - 现在混乱更大了。根据(来自 Lette 和 Ilya)的 2 个答案,我们有 2 个不同的答案。官方MSDN doc http://msdn.microsoft.com/en-us/library/8bwh56xe(VS.80).aspx每个进程说(对于版本 2.0+),但是缺少这句话版本。文档的1.1 http://msdn.microsoft.com/en-us/library/8bwh56xe(VS.71).aspx.

同时,在 Mason Bendixen 的文章中,它说它是针对每个应用程序域的。

由于他的文章很旧(2007 年 4 月),我已向他发送了一封电子邮件要求澄清,但如果其他人必须添加某些内容,请这样做。

Thanks


在托管中,我们有一个每个应用程序域 缓存 将规范 IUnknown 映射回 RCW。当 IUnknown 进入 系统(通过元帅呼叫, 通过激活,作为回报 来自方法调用的参数等), 我们检查缓存,看看是否有 RCW COM 对象已存在。如果 存在映射,对 返回现有的 RCW。否则一个 创建新的 RCW 和缓存映射 被添加。

from 梅森的博客 http://blogs.msdn.com/mbend/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

运行时可调用包装器 (RCW) 范围 - 进程还是应用程序域? 的相关文章

随机推荐

  • 将实体中的列表转换为数据库中的单个字符串列

    我有一个VARCHAR我的数据库中的字段 该字段的值为val1 val2 val3 是否可以将其设置为ArrayList
  • 在 Pig 中编写 udf 有点像教程

    我是 Pig 新手 并且正在尝试编写 udf 函数 所以基本上这是问题陈述 我有一个这样的虚拟数据 user id movie id date time stamp 所以我想做的就是这个 如果交易是在 9 am and 11 am gt b
  • 为什么 C# 方法不返回值?

    很容易理解为什么method 返回一个值 但我无法理解不返回值的方法的概念 static void PrintName string firstName string lastName Console Writeline firstName
  • 使用 nltk 从德语文本中提取单词

    我正在尝试从德语文档中提取单词 当我使用 nltk 教程中描述的以下方法时 我无法获取具有特定于语言的特殊字符的单词 ptcr nltk corpus PlaintextCorpusReader Corpus words nltk Text
  • 使用 csv 阅读器在文本文件中保留双引号

    您好 我有一个带有字符串的文本文件 你好 foo 酒吧 我想将其分成一个列表 hello foo bar 有什么办法可以实现这个目标吗 我现在正在尝试这个 for line in sys stdin csv file StringIO St
  • 如何为 Xcode 构建和编译 PJSIP,使用示例代码 IPJSUA 进行测试?

    如何使用xCode构建和编译PJSIP并运行示例代码IPJSUA 首先 您需要打开终端 终端可以在应用程序 gt 实用程序 gt 终端中找到 打开终端后 请确保指向桌面 以便更轻松地获取数据文件夹 只需输入 光盘桌面 恭喜 您已经进入桌面了
  • Yii2:仅对致命错误使用错误处理程序或指定处理的错误类型

    Yii2有它自己的错误处理程序 http www yiiframework com doc 2 0 guide runtime handling errors html 它将所有非致命 php 错误转换为可捕获的异常 是否可以仅使用它来处理
  • Javascript画布碰撞侧面检测

    嘿 我正在尝试获取画布中两个对象碰撞的一侧 这是我用于碰撞检测的内容 但它仅检查碰撞 而不检查特定的侧面 其中 o1 和 o2 是具有属性的对象 x X 轴上的位置 y Y 轴上的位置 w 矩形的宽度 h 矩形的高度 var collide
  • SQL Server 使用没有主键的聚集索引创建表

    是否可以从 SQL Server 2008 中的非主键创建表语句创建聚集索引 这样做的目的是针对 SQL Azure 中的表 因此我不能选择先创建表 然后在表上创建聚集索引 Edit 显然是 FluentMigrator 导致了我的问题 它
  • Dynamics CRM 2016 修改活动视图列表

    我对 MS Dynamics 非常陌生 我正在使用 Dynamics CRM 2016 我需要在活动页面中删除有关我未使用的实体的视图 例如营销活动响应 营销活动活动等 我在解决方案中的活动实体的视图列表中没有看到它们 所以我无法从那里删除
  • 如何根据ID获取文档下的所有数据

    目前我正在学习 Firestore 并努力编写查询 我想定位 giMXcFmLUxfCaCmyYo0TJFeEHBL2 文档下的所有字段 我的查询如下所示 if userId firebase firestore collection us
  • iOS 设备快速旋转 180 度会导致相机视图颠倒

    我已经实现了下面的代码来更改方向AVCaptureVideoSession基于UIInterfaceOrientation AVCaptureVideoOrientation interfaceOrientationToVideoOrien
  • 谷歌表格复制拖动公式

    使用复制拖动时如何从右侧复制紫色数字 它的工作原理应该是什么 B2 将是 K1 对于每个下一个单元格使用 INDEX QUERY FLATTEN INDIRECT K1 O Limit 1 offset SUM COUNTIF INDIRE
  • 如果请求 List,为什么我不能返回 List? [复制]

    这个问题在这里已经有答案了 我明白 如果S是一个子类T 那么一个List
  • 与maven父模块中Checkstyle和PMD配置的差异

    我有一个带有 Maven 的 Java 应用程序 其结构如下 parent pom xml child pom xml analyzers pmdrules xml checkstyle xml 我已经在父 pom xml 中配置了 PMD
  • 如何找到.net框架的应用程序?

    我正在开发扫描仪类型的应用程序 它采用不同的 C 代码库作为输入 我想知道在哪个 net 框架版本 1 1 2 0 3 5 4 0 特定代码库中构建 有人可以向我提供代码来检查代码库的 net 框架版本吗 我可以从 csproj 文件读取代
  • 如何在 Angular 库中添加引导程序

    我的版本是 1 npm v6 14 12 2 node v10 24 1 3 angular cli v8 0 2 我使用以下命令创建了一个库 Step 1 ng new my workspace create application fa
  • Twitter Bootstrap 模式阻止文本输入字段

    我正在尝试使用模式作为弹出帮助窗口 我将背景设置为 无 当模式打开 没有背景 时 原始 页面中的输入字段无法聚焦 其他输入类型 示例中的复选框和按钮 效果很好 任何想法 My code div class container div
  • 如何在as3中找到ip地址?

    我正在尝试使用 adobe Flash professional cs5 中的 as3 来查找 IP 地址 我不知道该怎么做 是否可以使用as3找到IP地址 不 如果不使用任何服务器端技术 AS3 是不可能实现这一点的 您可以使用加载程序并
  • 运行时可调用包装器 (RCW) 范围 - 进程还是应用程序域?

    引用非托管 COM 对象时 运行时可调用包装器 RCW 的范围是什么 根据文档 运行时恰好创建一个 RCW 对于每个 COM 对象 无论 存在的参考文献数量 那个物体 如果我必须 猜测 这个解释应该意味着 每个进程一个 但真的是这样吗 任何