3

我想停止服务,然后在服务停止后重新启动服务。我正在使用 c# 并生成了以下代码。问题是:如果服务已启动,它将停止服务但不会重新启动服务。如果下次调用该函数时服务停止,它将仅启动该服务。

string strCmdText1, strCmdText2;
strCmdText1 = "NET STOP \"AdmnService\"";
strCmdText2 = "NET START \"AdmnService\"";
System.Diagnostics.Process.Start("CMD.exe", "/C" + strCmdText1);
System.Diagnostics.Process.Start("CMD.exe", "/C" + strCmdText2);

有没有办法将命令连接成一行?我不确定 /C 做了什么,但也许还有其他一些开关可以执行两个命令。

4

3 回答 3

5

您可以使用ServiceController(在 System.ServiceProcess .Net 4 程序集中)。这是一个简单的控制台应用程序,展示了如何:

        ServiceController controller = new ServiceController("AdmnService");
        controller.Stop();

        controller.WaitForStatus(ServiceControllerStatus.Stopped);
        Console.WriteLine("Service status: " + controller.Status);

        controller.Start();
        Console.WriteLine("Service status: " + controller.Status);
于 2013-02-26T19:40:48.530 回答
3

ServiceController.Start将为您启动...此类的其他方法可让您检查状态并停止服务。

于 2013-02-26T19:38:55.150 回答
1

使用ServiceController类可能更容易。

使用 Status 属性,您可以找出服务的状态并重新启动它或使用WaitForStatus方法发出信号

于 2013-02-26T19:39:20.670 回答