我有一个服务(Main),负责处理其他Windows服务。它决定需要停止,启动哪些服务等。
主服务通过DisplayNames控制其他服务。 在Windows启动时,它从配置中读取DisplayNames并威胁其他服务。
在Windows 2016上,启动服务需要一些时间,ServiceControl.DisplayName返回ServiceController.ServiceName,因此主服务无法从配置中找到服务。
是否存在一些解决方法来解决此问题?
答案 0 :(得分:0)
我想,您是否可以尝试等待特定状态?
例如:
ServiceController.WaitForStatus(ServiceControllerStatus.Running);
将等到其状态为" 正在运行"。它暂停了应用程序的处理,直到服务达到所需状态。
这是documentation。
另外,您可以在C#中查看this文章 - ServiceController。
让我知道它是否有效。
答案 1 :(得分:0)
显示名称,顾名思义,是为了显示。它们并不意味着与进行比较,而是用于确定匹配。
对于程序与程序的交互,应该使用服务名称。
所以你的问题是基于一个不好的前提 - 显示名称是稳定的,可以依赖。无论看起来如何令人反感,您需要重新设计系统,使其不依赖于显示名称。