如何重启窗口服务

时间:2013-03-03 08:21:12

标签: c# .net winforms visual-studio-2010 windows-services

我想重新启动名为“后台处理程序”的窗口服务我做了以下代码,但没有运气,任何机构都知道出现了什么问题? 代码是

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行“

2 个答案:

答案 0 :(得分:9)

您必须等待停止服务后再使用WaitForStatus方法再次启动它:

else
{
    service.Stop();
    service.WaitForStatus(ServiceControllerStatus.Stopped);
    service.Start();
    service.WaitForStatus(ServiceControllerStatus.Running);
}

答案 1 :(得分:0)

我认为问题在于您需要管理员权限才能启动和停止服务,这就是您必须提供所需权利的原因。

要执行此操作,请将ISS中的应用程序池的标识更改为LocalSystem。

希望这个帮助