【问题标题】:How to restart windows service?如何重启windows服务?
【发布时间】:2011-04-22 05:36:37
【问题描述】:

我从http://www.csharp-examples.net/restart-windows-service/ 得到一个 sn-p 来重新启动 windows 服务,但我不知道在哪里放置代码?

在我的应用程序中安装 Windows 服务后,我需要重新启动它。

谢谢!

已编辑

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

【问题讨论】:

  • 主持人:我有办法了。我感谢输入的 cmets,但他们都没有帮助我,因此我想删除这个问题。

标签: c# asp.net visual-studio windows-services


【解决方案1】:

我认为您不应该在安装后放入。安装程序可能会在安装后启动服务,这似乎是一种混乱的方式。如果你真的需要它,你可以创建一个小应用程序或 .dll 来执行此操作,并且可以在一切完成后从安装程序本身调用。但是,我会调查为什么安装后需要重新启动服务,因为这主要指向您的程序中的错误。应该更容易解决。

这个片段应该可以重新启动。不要使用睡眠,因为服务可能需要超过该时间来启动/停止,并且您会遇到异常。

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

【讨论】:

    【解决方案2】:

    假设您有一些安装服务的应用程序,重新启动(或以其他方式控制服务)的代码应该在您的应用程序中运行

    【讨论】:

      猜你喜欢
      • 2023-04-08
      • 1970-01-01
      • 2015-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多