ServiceController只会卡住而没有任何异常

问题描述

| 我正在使用ServiceController重新启动Windows Server。这是我的C#代码
ServiceController service = new ServiceController(\"ServiceName\");   
service.Stop();
service.WaitForStatus(ServiceControllerStatus.Stopped,15000);
service.Start();
service.WaitForStatus(ServiceControllerStatus.Running,15000);
我在本地计算机上运行良好,如果服务\“ ServiceName \”不存在,则会引发异常,这是可以的。 但是在服务器上,如果不存在带有\“ ServiceName \”的服务,则我需要运行此代码,我没有得到任何异常,并且代码仅停留在此处:
service.Stop();
并且它永远等待着……结果我无法抓住它,我无法做任何它只是卡住的事情。 有谁能够帮助我?     

解决方法

如果您的代码找不到该服务,则不要依赖异常,这是怎么回事:
    ServiceController service = ServiceController.GetServices()
        .Where(s => s.ServiceName == \"ServiceName\")
        .SingleOrDefault();

    if (service != null)
    {
        service.Stop();
        service.WaitForStatus(ServiceControllerStatus.Stopped,TimeSpan.FromSeconds(15));
        service.Start();
        service.WaitForStatus(ServiceControllerStatus.Running,TimeSpan.FromSeconds(15));
    }
    else
    {
        // Couldn\'t find service
    }
注意:我必须更改ServiceControllerStatus.WaitForStaus签名以使用时间跨度