在c#中重新启动Windows服务

我从SO获得了一个链接无法重新启动服务 ,它说重启Windows服务。

它应该重新启动服务的方式在问题中提到

public static void RestartService(string serviceName, int timeoutMilliseconds) { ServiceController service = new ServiceController(serviceName); int millisec1 = Environment.TickCount; TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds); if (!(service.Status.Equals(ServiceControllerStatus.Stopped) || service.Status.Equals(ServiceControllerStatus.StopPending))) { service.Stop(); service.WaitForStatus(ServiceControllerStatus.Stopped, timeout); } // count the rest of the timeout int millisec2 = Environment.TickCount; timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds - (millisec2 - millisec1)); if (!(service.Status.Equals(ServiceControllerStatus.Running) || service.Status.Equals(ServiceControllerStatus.StartPending))) { service.Start(); service.WaitForStatus(ServiceControllerStatus.Running, timeout); } } 

但我不知道在哪里编写代码。 我需要从我的应用程序安装后立即重新启动Windows服务

如果需要任何输入,请告诉我。

谢谢!

我只是使用net startnet stop来重启服务。 例:

 using System.Diagnostics; public static void RestartService(string serviceName) { var psi = new ProcessStartInfo("net.exe", "stop " + serviceName); psi.WindowStyle = ProcessWindowStyle.Hidden; psi.UseShellExecute = true; psi.WorkingDirectory = Environment.SystemDirectory; var st = Process.Start(psi); st.WaitForExit(); psi = new ProcessStartInfo("net.exe", "start " + serviceName); psi.UseShellExecute = true; psi.WindowStyle = ProcessWindowStyle.Hidden; psi.WorkingDirectory = Environment.SystemDirectory; st = Process.Start(psi); st.WaitForExit(); }