重新启动Windows服务在C# [英] Restart Windows Service in c#

查看:108
本文介绍了重新启动Windows服务在C#的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我得到一个链接从SO 无法重新启动服务C#重新启动Windows服务。

I got a link from SO cannot restart a Service C# where it says to restart the windows service.

就应该重新启动该服务的方法是在这个问题提到

The way it should restart the service is mentioned in the question as

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

但我不知道在这里,到哪里写code。我需要尽快重新启动Windows服务作为一个从我的应用程序安装

But i am not sure here, as to where to write the code. I need to restart the windows service as soon as that is installed from my application

让我知道是否需要任何输入。

Let me know if any input is needed.

谢谢!

推荐答案

我简单地使用网​​络启动净停止重新启动服务。例如:

I simply use net start and net stop to restart services. Example:

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

这篇关于重新启动Windows服务在C#的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆