【问题标题】:COM object lifetime management in an ATL serviceATL 服务中的 COM 对象生命周期管理
【发布时间】:2011-05-09 03:26:34
【问题描述】:

我正在努力理解使用 ATL 编写 Windows 服务的概念。

我已经创建了一个项目,并且了解我可以重写 CAtlServiceModuleT 函数来满足我对服务的需求。

我想做的是让服务创建一个处理作业调度和执行的 COM 对象(称为 Manager)。

如何创建在处理所有作业的服务的整个生命周期中都可用的 COM 对象的单个实例?

我设想编写一个客户端程序,调用 Manager 公开的接口上的函数,以创建/读取/更新/删除作业。

我的想法是,在我的客户端程序连接到它之前,Service 不会创建 Manager 对象 - 当最后一个客户端与它断开连接时,COM 会破坏管理器 - 从而扼杀它处理作业的能力。

任何关于此的好的文档将不胜感激!

更新:

会不会像从 CAtlServiceModuleT::Run() 的覆盖版本中调用 CoCreateInstance 一样简单,然后在服务关闭时进行最终的 Release 调用?!

【问题讨论】:

标签: c++ com windows-services atl


【解决方案1】:

您可以使用CComClassFactorySingleton 来创建这样的对象。

【讨论】:

    猜你喜欢
    • 2013-02-05
    • 1970-01-01
    • 2010-12-17
    • 2012-12-28
    • 1970-01-01
    • 1970-01-01
    • 2012-11-06
    • 2013-08-08
    • 2020-07-28
    相关资源
    最近更新 更多