【发布时间】:2011-06-21 21:19:20
【问题描述】:
我在一个 C# 项目中有三个 Windows 服务。使用安装程序类(它包含三个服务安装程序和一个进程安装程序),我能够安装我的所有服务并将它们作为三个不同的 Windows 服务启动。
现在我试图在一个服务名称下运行这些服务(我希望在服务控制管理器中看到一个服务名称,而不是三个)。最好的方法是什么?
提前致谢!
【问题讨论】:
标签: c# windows-services
我在一个 C# 项目中有三个 Windows 服务。使用安装程序类(它包含三个服务安装程序和一个进程安装程序),我能够安装我的所有服务并将它们作为三个不同的 Windows 服务启动。
现在我试图在一个服务名称下运行这些服务(我希望在服务控制管理器中看到一个服务名称,而不是三个)。最好的方法是什么?
提前致谢!
【问题讨论】:
标签: c# windows-services
您可以只拥有一个主要服务,将其他可执行文件作为常规进程生成(请参阅Process.Start(..)),这些服务不会显示为 Windows 服务。该服务必须控制依赖进程的生命周期(在服务启动后启动它们/在关闭前停止它们)。
【讨论】:
新建一个windows服务并启动3个线程。
【讨论】:
您所要做的就是实现一些代码重用原则。
将每个相应的工作单元移动到类/库而不是服务中。创建一个引用最终结果库的服务。您的服务意图可能是某种计时器,并且可能会暴露 API 端点。创建单个服务并从 3 个独特的计时器中激活必要的类(如果需要 - 您可能会使用单个计时器来激活 3 个不同的类方法)。以类似的方式包装事件或 API 端点。服务应该包含很少或不包含“业务”逻辑,它应该从引用的业务库中派生该工作。遵循这种做法,您的问题将主要回答它自己。
【讨论】: