c#:如何将多个Windows服务作为一项服务运行?

时间:2011-06-21 21:19:21

标签: c# windows-services

我在一个C#项目中有三个Windows服务。使用安装程序类(它包含三个服务安装程序和一个进程安装程序),我能够安装所有服务并以三种不同的Windows服务启动它们。

现在我正在尝试在一个服务名称下运行这些服务(我希望在服务控制管理器中看到一个服务名称,而不是三个)。这样做的最佳方法是什么?

提前致谢!

3 个答案:

答案 0 :(得分:4)

你可能只有一个主要服务产生其他可执行文件作为常规进程(请参阅Process.Start(..)),这些进程不会显示为Windows服务。该服务必须控制从属进程的生命周期(在服务启动后启动它们/在关闭之前停止它们)。

答案 1 :(得分:1)

创建一个新的Windows服务并启动3个线程。

答案 2 :(得分:0)

您所要做的就是实现代码重用的一些原则。

将每个相应的工作单元移动到类/库而不是服务中。创建引用最终结果库的单个服务。您的服务意图可能是某种类型的计时器,并可能暴露API端点。创建单个服务并从3个独特的计时器激活必要的类(如果需要 - 您可以使用单个计时器激活3个不同的类方法)。以类似的方式包装事件或API端点。服务应该包含很少或没有“业务”逻辑,它应该从引用的业务库中获得该工作。遵循这种做法,你的问题将主要回答它自己。