我想重新启动名为“后台处理程序”的窗口服务我做了以下代码,但没有运气,任何机构都知道出现了什么问题? 代码是
using System.ServiceProcess;
ServiceController service = new ServiceController("Spooler");
if ((service.Status.Equals(ServiceControllerStatus.Stopped)) ||
(service.Status.Equals(ServiceControllerStatus.StopPending)))
{
service.Start();
}
else
{
service.Stop();
service.Start();
}
例外是
“System.InvalidOperationException:无法启动服务假脱机程序 电脑 '。'。 ---> System.ComponentModel.Win32Exception:一个实例 该服务已在运行
---内部异常堆栈跟踪结束---
在System.ServiceProcess.ServiceController.Start(String [] args)
在System.ServiceProcess.ServiceController.Start()
at servicerestart.Form1.button1_Click(Object sender,EventArgs e) 在D:\ samplecodes \ servicerestart \ servicerestart \ Form1.cs:第33行“
答案 0 :(得分:9)
您必须等待停止服务后再使用WaitForStatus
方法再次启动它:
else
{
service.Stop();
service.WaitForStatus(ServiceControllerStatus.Stopped);
service.Start();
service.WaitForStatus(ServiceControllerStatus.Running);
}
答案 1 :(得分:0)
我认为问题在于您需要管理员权限才能启动和停止服务,这就是您必须提供所需权利的原因。
要执行此操作,请将ISS中的应用程序池的标识更改为LocalSystem。
希望这个帮助