2013-02-12 173 views
-1

我希望每一个小时重新启动Windows服务的C#代码。我有这个方法 但是当我但它在项目安装程序或在哪里?我可以把它放在我想重新启动它的相同服务中吗?如何重新启动windows服务c#

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 
    { 
     // ... 
    } 
} 
+0

你想建立一个监视另一项服务的服务?或者您是否期望关闭的服务被关闭以便必须定期手动启动? – 2013-02-12 16:57:54

回答

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

}

再拍服务重新启动它

0

您可以将其添加到Windows调度程序。只要把这个函数放在一个Windows命令程序中,并按照每小时一次的时间启动它。此外,您可以有第二项服务来完成第一项服务的回收。

-rwg

+0

如果我想kake服务做到这一点,你能帮我吗? – 2013-02-12 18:36:56