/// <summary>
/// Перезапуск виндовой службы
/// </summary>
/// <param name="serviceName">Имя службы</param>
/// <param name="timeoutMilliseconds">Таймаут</param>
public static void RestartService(string serviceName, int timeoutMilliseconds = 30000)
{
ServiceController service = new ServiceController(serviceName);
try
{
TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);
if (service.Status != ServiceControllerStatus.Stopped)
{
Log.MesNormal("Служба " + serviceName + " запущена. Останавливаем.");
service.Stop();
service.WaitForStatus(ServiceControllerStatus.Stopped, timeout);
Log.MesPass("Служба " + serviceName + " остановлена.");
}
Log.MesNormal("Запускаем службу " + serviceName);
service.Start();
service.WaitForStatus(ServiceControllerStatus.Running, timeout);
Log.MesPass("Служба " + serviceName + " запущена.");
}
catch (Exception ex)
{
Log.MesError("Ошибка перезапуска службы " + serviceName + "\r\n" + ex.Message + "\r\n" + ex.StackTrace);
}
}