【问题标题】:Is CoCreateInstance using CLSCTX_LOCAL_SERVER enough to ensure that all the applications will share the COM object instance?使用 CLSCTX_LOCAL_SERVER 的 CoCreateInstance 是否足以确保所有应用程序共享 COM 对象实例?
【发布时间】:2014-05-12 19:20:52
【问题描述】:

使用 CLSCTX_LOCAL_SERVER 的 CoCreateInstance 是否足以确保所有应用程序都使用在第一个 CoCreateInstance 期间加载的 COM 对象的相同实例?

【问题讨论】:

    标签: c++ com interop


    【解决方案1】:

    不,由服务器决定,客户端对此没有发言权。

    服务器在注册其类工厂时使用REGCLS enumeration。使用 REGCLS_SINGLEUSE,客户端中的下一个 CoCreateInstance() 调用将启动另一个服务器。你想要 REGCLS_MULTIPLEUSE。

    【讨论】:

      【解决方案2】:

      不,每次调用 CoCreateInstance 都会创建一个新对象。

      如果您希望每个进程共享同一个对象,则必须创建另一个类作为您要共享的对象的工厂。

      让所有客户端共享同一个对象的另一种方法是使您的对象成为代理对象,该对象遵循服务器 EXE 中的单例。

      【讨论】:

      • 我可以使用 DECLARE_CLASSFACTORY_SINGLETON 吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多