我使用 VC# 为另一个应用程序(我们称之为“A”)创建了一个 UI 前端(称为“B”)。B是一个独立的EXE,必须(由于某些原因)由A调用。(DLL由于安全策略是不可能的。)
目前的流量是:
- 启动 A(充当 COM 服务器)。
- 让 A 使用 system() 调用执行 B。
- B 创建到 A 的 COM 连接。
- 用户关闭 B
- A 也关闭了。<<<这就是问题!
所需的流程是:
...(5) A 不是封闭的。
据我发现,我认为导致不良行为的原因是 COM 引用计数器自动减少。因为 B 正在使用现有的 A 实例,所以计数器之前是 1,因此减少到 0,导致 A 完全关闭。(这是一个真正的问题,因为此时用户可能会丢失 A 中的数据。)
我已经尝试影响 GC 以保持 A 活着,但没有成功。
问题是:
如何防止 A 关闭,例如,通过避免引用计数器的递减?