Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何重新启动Windows服务_C#_.net_Winforms_Visual Studio 2010_Windows Services - Fatal编程技术网

C# 如何重新启动Windows服务

C# 如何重新启动Windows服务,c#,.net,winforms,visual-studio-2010,windows-services,C#,.net,Winforms,Visual Studio 2010,Windows Services,我想重新启动名为“后台处理程序”的窗口服务,我是按照代码做的,但运气不好,任何人都不知道出了什么问题? 代码是 例外是 “System.InvalidOperationException:无法在上启动后台处理程序 计算机“”。-->System.ComponentModel.Win32Exception:实例 该服务的一部分已在运行 ---内部异常堆栈跟踪的结束--- 位于System.ServiceProcess.ServiceController.Start(字符串[]args) 在Syst

我想重新启动名为“后台处理程序”的窗口服务,我是按照代码做的,但运气不好,任何人都不知道出了什么问题? 代码是

例外是

“System.InvalidOperationException:无法在上启动后台处理程序 计算机“”。-->System.ComponentModel.Win32Exception:实例 该服务的一部分已在运行

---内部异常堆栈跟踪的结束---

位于System.ServiceProcess.ServiceController.Start(字符串[]args)

在System.ServiceProcess.ServiceController.Start()处

在servicerestart.Form1.button1\单击(对象发送方,事件参数e) 在D:\samplecodes\servicerestart\servicerestart\Form1.cs中:第33行“


您必须在停止服务后等待,然后才能使用以下方法再次启动服务:


我认为问题在于,您需要管理员权限才能启动和停止服务,这就是为什么您必须授予所需的权限

要执行此操作,请将ISS中applicationpool的标识更改为LocalSystem


希望这有帮助

,但运气不佳
不是一个非常精确的问题描述。您能否对这个问题进行更具体的描述,不涉及运气或上帝,而是涉及具体的错误消息或不希望出现的行为。@Darin Dimitrov我已经更新了我的问题它看起来可以工作,但我看不到服务小程序(SCM)中的服务正在停止和启动。我们有什么机制可以快速停止并立即启动吗?没有,这是在.NET中启动和停止服务的正确方法。您也可以在服务启动后等待。我不认为在.Start()之后;方法,将有一个ServiceControllerStatus.Started方法。有一个编译错误是的,应该是
正在运行
,而不是
已启动
。我已经更新了我的答案。仍然在小程序窗口中,我无法看到服务已停止和启动。也许一切都进展得很快??是否有任何机制可以从注册表或任何地方查看serivce是否停止和启动??从事件日志中,我无法看到它
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();
}
else
{
    service.Stop();
    service.WaitForStatus(ServiceControllerStatus.Stopped);
    service.Start();
    service.WaitForStatus(ServiceControllerStatus.Running);
}