0

我希望每小时通过 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
    {
        // ...
    }
}
4

2 回答 2

1

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

 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);
    }
}

}

并创建另一个服务来重新启动它

于 2017-04-24T08:33:21.447 回答
0

您可以将其添加到 Windows 调度程序。只需将此功能放在 Windows 命令程序中并安排每小时启动它。此外,您可以有第二个服务来完成第一个服务的回收。

-rwg

于 2013-02-12T17:00:18.100 回答