用c#重新启动Windows Service

本文关键字:Service Windows 重新启动 | 更新日期: 2023-09-27 17:49:25

我从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服务,只要从我的应用程序安装

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

谢谢!

用c#重新启动Windows Service

我只是使用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();
}