我正在使用以下代码片段来停止服务.但是,这两个Console.Writeline语句都表明服务正在运行.为什么服务不会停止?
class Program
{
static void Main(string[] args)
{
string serviceName = "DummyService";
string username = ".\\Service_Test2";
string password = "Password1";
ServiceController sc = new ServiceController(serviceName);
Console.WriteLine(sc.Status.ToString());
if (sc.Status == ServiceControllerStatus.Running)
{
sc.Stop();
}
Console.WriteLine(sc.Status.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
您需要调用sc.Refresh()以刷新状态.有关更多信息,请参阅http://msdn.microsoft.com/en-us/library/system.serviceprocess.servicecontroller.stop.aspx.
此外,服务可能需要一些时间才能停止.如果方法立即返回,将关闭更改为以下内容可能很有用:
// Maximum of 30 seconds.
for (int i = 0; i < 30; i++)
{
sc.Refresh();
if (sc.Status.Equals(ServiceControllerStatus.Stopped))
break;
System.Threading.Thread.Sleep(1000);
}
Run Code Online (Sandbox Code Playgroud)