2013-02-26 193 views
3

我想停止服务,然后在服务完成停止后重新启动服务。 我正在使用c#并生成了以下代码。问题是:如果服务已启动,它将停止服务,但不会重新启动服务。如果服务在下次调用该函数时停止,它将只启动该服务。使用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的功能,但可能还有其他一些开关执行两个命令。

+0

你可以创建一个批处理文件来执行2个命令,然后使用c#来启动批处理文件吗? – Matt 2013-02-26 19:36:33

+0

正是我在想什么。 – RandomUs1r 2013-02-26 19:36:59

回答

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); 
+0

这工作得很好! thnks – crh225 2013-02-26 20:14:22

1

使用ServiceController类可能更容易。

使用状态属性,你可以找到服务的状态,并再次启动它或者使用WaitForStatus方法将信号