防止在应用程序关闭时减少COM引用计数器
本文关键字:COM 引用 计数器 应用程序 | 更新日期: 2023-09-27 17:53:25
我使用vc#为另一个应用程序(我们称之为" a ")创建了一个UI前端(称为"B")。B是一个独立的EXE,必须(由于某些原因)由a调用(由于安全策略,DLL是不可能的)
电流为:
- 启动A(作为COM服务器)。
- 让A使用system()调用执行B
- B创建到a的COM连接。
- 用户关闭B
- A也关闭了。& lt; & lt; & lt;这就是问题所在!
期望的流程是:
…(5)A未关闭。
据我所知,我认为不希望出现这种行为的原因是COM引用计数器自动减少了。由于B正在使用现有的A实例,计数器先前为1,因此减少到0,导致A完全关闭(这是一个真正的问题,因为用户可能在此时丢失A中的数据)
我已经尝试过影响GC使A存活,但是没有成功。
问题是:
如何防止A的关闭,例如,通过避免引用计数器的递减?
如果你可以访问A中的com对象,你可以执行Marshal。