我有一个服务(Main),它负责处理其他Windows服务。它决定哪些服务需要停止、启动等。
主服务通过DisplayNames控制其他服务。在Windows启动时,它从配置中读取DisplayNames并威胁其他服务。
在Windows2016上,启动服务需要一些时间,而ServiceControl.DisplayName返回ServiceController.ServiceName,因此主服务无法从配置中找到服务。
是否存在一些解决方法来解决此问题?
发布于 2018-05-05 00:24:45
我想,你可以试着等待特定的状态吗?
例如
ServiceController.WaitForStatus(ServiceControllerStatus.Running);将一直等到它的状态为"Running“。它挂起应用程序的处理,直到服务达到所需的状态。这是一个documentation。
此外,您还可以在C#中查看this文章- ServiceController。
如果起作用了,请告诉我。
发布于 2018-05-05 02:22:59
顾名思义,显示名称就是用来显示的。它们不是用来比较任何东西的,而是用来确定匹配的。
对于程序到程序的交互,您应该使用服务名称。
所以你的问题是基于一个不好的前提--显示名称是稳定的,可能会被依赖。无论看起来多么令人反感,您都需要重新构建您的系统,以不依赖于显示名称。
https://stackoverflow.com/questions/50177003
复制相似问题