110,500
社区成员
发帖
与我相关
我的任务
分享
/// <summary>
/// 重启服务,每次尝试间隔一秒,返回是否成功
/// </summary>
/// <param name="serviceName">服务名</param>
/// <param name="attempts">尝试次数</param>
public static bool RestartService(string serviceName, int attempts)
{
using (var service = new ServiceController(serviceName))
{
if (service.Status != ServiceControllerStatus.Stopped)
{
if(service.Status == ServiceControllerStatus.StopPending)
{
System.Threading.Thread.Sleep(1500);
}
else
{
service.Stop();
}
}
for (int i = 0; i < attempts; i++)
{
service.Refresh();
try
{
if (service.Status != ServiceControllerStatus.Running && service.Status != ServiceControllerStatus.StartPending) service.Start();
return true;
}
catch
{
System.Threading.Thread.Sleep(1000);
}
return true;
}
}
//"Had tried 3 times to start service, but still failed");
return false;
}
RestartService("Spooler", 3);