防止在应用程序关闭时减少COM引用计数器

本文关键字:COM 引用 计数器 应用程序 | 更新日期: 2023-09-27 17:53:25

我使用vc#为另一个应用程序(我们称之为" a ")创建了一个UI前端(称为"B")。B是一个独立的EXE,必须(由于某些原因)由a调用(由于安全策略,DLL是不可能的)

电流为:

  1. 启动A(作为COM服务器)。
  2. 让A使用system()调用执行B
  3. B创建到a的COM连接。
  4. 用户关闭B
  5. A也关闭了。& lt; & lt; & lt;这就是问题所在!

期望的流程是:

…(5)A未关闭。

据我所知,我认为不希望出现这种行为的原因是COM引用计数器自动减少了。由于B正在使用现有的A实例,计数器先前为1,因此减少到0,导致A完全关闭(这是一个真正的问题,因为用户可能在此时丢失A中的数据)

我已经尝试过影响GC使A存活,但是没有成功。

问题是:

如何防止A的关闭,例如,通过避免引用计数器的递减?

防止在应用程序关闭时减少COM引用计数器

如果你可以访问A中的com对象,你可以执行Marshal。

声明A也在使用COM对象。