gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 23:14:05 25 4
gpt4 key购买 nike

我有两个服务进程(派生自 System.ServiceProcess.ServiceBase)MyService1MyService2

我试图在 Windows 服务的 Programm.csMain() 中运行它们。

static void Main()
{
ServiceBase[] servicesToRun = { new MyService1(), new MyService2() };
ServiceBase.Run(servicesToRun);
}

MyService1MyService2OnStart 方法中,我写入了一个日志文件,这样我就可以知道它们正在运行。

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

但只有 MyService1 运行。 MyService2 什么都不做(即没有启动日志条目)。当我更改数组中的顺序时:

ServiceBase[] servicesToRun = { new MyService2(), new MyService1() }

只有 MyService2 运行。

为了弄清楚这个问题,我使用了一个小工具 AndersonImes.ServiceProcess.ServicesLoader ( https://windowsservicehelper.codeplex.com/ ) 来绕过无法在 Visual Studio 中直接调试 Windows 服务的限制。使用此工具,我可以同时启动和运行服务 MyService1MyService2。但我仍然不知道为什么 Windows 只运行 ServiceBase[] servicesToRun 数组中的第一项。

有什么想法吗?

最佳答案

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

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

关于c# - 一个Windows服务中的多个服务进程(System.ServiceProcess.ServiceBase),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30181160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com