5
我试图通过ServiceBase.Run(ServiceBase[])
运行几个类似的服务,但它只运行第一个。 MSDN并没有明确否认这一点;这段摘录是否意味着它们都必须是不同的类型? (大胆的是我,而不是MSDN)C#,Windows服务:ServiceBase.Run与几个相同类型的服务
调用此重载在服务可执行文件的main()函数来加载的相关服务的数组。
我试图通过ServiceBase.Run(ServiceBase[])
运行几个类似的服务,但它只运行第一个。 MSDN并没有明确否认这一点;这段摘录是否意味着它们都必须是不同的类型? (大胆的是我,而不是MSDN)C#,Windows服务:ServiceBase.Run与几个相同类型的服务
调用此重载在服务可执行文件的main()函数来加载的相关服务的数组。
这是意图。这里的想法是,您可以让一个可执行文件创建“多个服务”,而不仅仅是一种类型的服务。
当向SCM注册服务时,预计每个服务都是唯一的。这表明(我相信是这样),你阵列中的每个元素都必须是ServiceBase的唯一实现。
如果你真的只是试图有相同的服务的多个副本,我会重新考虑你的设计。只要让服务使用同一个方法触发多个线程,它将为单个服务实例提供相同的效果。
多线程是最初的设计,我只是试验这个。感谢您为我清理。 – 2010-04-02 17:11:38
应该可以有2个服务实现相同的类型。您只需确保每个服务都有唯一的服务名称。 如果您想让2个服务具有相同的功能但使用不同的配置,则此方案特别有用。说不同的共享文件夹来读取文件或连接到不同的数据库。 我创建了一个名为Daemoniq的Windows服务库。它支持在一个进程中运行多个Windows服务。 http://code.google.com/p/daemoniq/wiki/MultipleWindowsServicesOneProcess。 – 2010-04-05 07:31:52
虽然有可能,但只要分开命名它们,它们本质上就是两个单独的服务;)就是说,您的方法很好。 – 2010-04-05 15:44:49