2011-04-22 155 views
1

我從http://www.csharp-examples.net/restart-windows-service/得到了一個片段來重新啓動Windows服務,但我不確定在哪裏放置代碼?如何重新啓動Windows服務?

我需要在我的應用程序中安裝它之後重新啓動Windows服務。

謝謝!

EDITED

private void ProjectInstaller_OnAfterInstall(object sender, InstallEventArgs e) 
    { 
     //base.OnAfterInstall(e); 
     ServiceController sc = new ServiceController("MyServiceName", Environment.MachineName); 
     sc.Start(); 
     System.Threading.Thread.Sleep(3000); 
     sc.Stop(); 
     System.Threading.Thread.Sleep(2000); 
     sc.Start(); 
     System.Threading.Thread.Sleep(3000); 
    } 
+1

主持人:我已經得到了解決辦法。我讚賞所輸入的意見,但他們都沒有幫助我,因此我想刪除這個問題。 – 2011-04-27 07:54:54

回答

2

我不認爲你應該在後裝。無論如何安裝後,安裝程序可能會啓動服務,這似乎是一個混亂的方式來做到這一點。您可以創建一個小應用程序或.dll,如果您真的需要它,可以在完成所有操作後從安裝程序自行調用。不過,我會調查爲什麼你需要在安裝後重新啓動服務,因爲它主要指向程序中的錯誤。應該更容易解決這個問題。

這被剪斷應該做重新啓動的伎倆。不要使用睡眠,因爲服務可能需要超過這段時間才能開始/停止,並且您將會遇到異常情況。

var sc = new ServiceController("MyService"); 
sc.Stop(); 
sc.WaitForStatus(ServiceControllerStatus.Stopped, TimeSpan.FromSeconds(30)); 
sc.Start(); 
sc.WaitForStatus(ServiceControllerStatus.Running, TimeSpan.FromSeconds(30)); 
0

假設你有一些應用程序,安裝服務,代碼重啓(或控制服務)應該在你的應用程序中運行

+0

感謝您的及時回覆。但是在哪裏運行這些服務? – 2011-04-22 05:40:34