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

时间:2013-01-16 07:49:31

标签: c# com reference counter

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

目前的流程是:

  1. 启动A(充当COM服务器)。
  2. 让A使用system()调用执行B.
  3. B创建与A的COM连接。
  4. 用户关闭B
  5. A也关闭了。 <<<这就是问题!
  6. 所需的流程是:

    ...(5)A未关闭。

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

    我已经尝试过影响GC以保持A活着,但没有成功。

    问题是:

    如何通过避免减少参考计数器来阻止A 的关闭?

1 个答案:

答案 0 :(得分:0)

如果您可以访问A中的com对象,则可以对其进行Marshal.AddRef以递增ref计数器,即声明A也在使用COM对象。