我正在使用以下代码片段来停止服务。但是,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());
}
}
最佳答案
您需要调用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);
}
关于c# - Windows 服务不会停止/启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4016278/