一个Windows服务中的多个服务进程(System.ServiceProcess.ServiceBase)

时间:2015-05-12 03:15:52

标签: c# .net visual-studio debugging service

我有两个服务流程(源自System.ServiceProcess.ServiceBaseMyService1MyService2

我试图在Windows服务Main()的{​​{1}}中运行它们。

Programm.cs

static void Main() { ServiceBase[] servicesToRun = { new MyService1(), new MyService2() }; ServiceBase.Run(servicesToRun); } OnStart的{​​{1}}方法中,我写入日志文件,以便告诉它们正在运行。

系统构建良好,我可以安装该服务。

但只有MyService1才会运行。 MyService2没有做任何事情(即没有启动日志条目)。当我更改数组中的顺序时:

MyService1

仅运行MyService2

为了试图深入了解这一点,我使用了一个小工具AndersonImes.ServiceProcess.ServicesLoader(https://windowsservicehelper.codeplex.com/)来解决您无法在Visual Studio中直接调试Windows服务的限制。使用此工具,我可以同时启动和运行服务ServiceBase[] servicesToRun = { new MyService2(), new MyService1() } MyService2。但我仍然不知道为什么Windows只运行MyService1数组中的第一项。

有什么想法吗?

1 个答案:

答案 0 :(得分:5)

我终于找到了答案:http://www.bryancook.net/2008/04/running-multiple-net-services-within.html。一个隐藏的资源,谢谢'bryan'!希望这有助于下一个开发人员节省时间......

ServDependedOn周围的解释与我在项目中看到的不完全相符。这不是关于启动它们,而是确保它们已经启动。查看https://msdn.microsoft.com/en-us/library/system.serviceprocess.servicecontroller.servicesdependedon%28v=vs.110%29.aspx。我不需要这个,因为他们不相互依赖。