如何重启windows服务c#

时间:2013-02-12 16:55:57

标签: c#-4.0 windows-services

我希望每隔一小时通过c#代码重启windows服务。我有这个方法 但当我,但它在项目安装程序或在哪里?我可以将它放在我想重新启动它的同一服务中吗?

public static void RestartService(string serviceName, int timeoutMilliseconds)
{
    ServiceController service = new ServiceController(serviceName);

    try
    {
        int millisec1 = Environment.TickCount;
        TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);

        service.Stop();
        service.WaitForStatus(ServiceControllerStatus.Stopped, timeout);

        // count the rest of the timeout
        int millisec2 = Environment.TickCount;
        timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds - (millisec2 - millisec1));

        service.Start();
        service.WaitForStatus(ServiceControllerStatus.Running, timeout);
    }
    catch
    {
        // ...
    }
}

2 个答案:

答案 0 :(得分:0)

您可以将其添加到Windows计划程序。只需将此功能放在Windows命令程序中,并按小时计划启动它。此外,您可以使用第二项服务来完成第一项服务的回收。

-rwg

答案 1 :(得分:0)

我通过像这样在服务中创建一个方法来解决它

 private void StopService()
{
   using (ServiceController service = new ServiceController("ServiceName"))
   {
   try
   {
       TimeSpan timeout = TimeSpan.FromMilliseconds(80000);

        if (!(service.Status.Equals(ServiceControllerStatus.StartPending) || service.Status.Equals(ServiceControllerStatus.StopPending)))
        {
            service.Stop();
            service.WaitForStatus(ServiceControllerStatus.Stopped, timeout);
        }
    }
    catch (Exception ex)
    {
        ExceptionLog(ex);
    }
}

}

并制作另一项服务以重新启动它