2013-02-12 172 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