c# - 如何重启窗口服务

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

我想重新启动名为“Spooler”的窗口服务我做了以下代码,但没有运气,任何人都知道发生了什么问题? 代码是

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();
}

异常(exception)是

"System.InvalidOperationException: Cannot start service Spooler on computer '.'. ---> System.ComponentModel.Win32Exception: An instance of the service is already running

--- End of inner exception stack trace ---

at System.ServiceProcess.ServiceController.Start(String[] args)

at System.ServiceProcess.ServiceController.Start()

at servicerestart.Form1.button1_Click(Object sender, EventArgs e) in D:\samplecodes\servicerestart\servicerestart\Form1.cs:line 33"

最佳答案

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

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

关于c# - 如何重启窗口服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15183810/

相关文章:

.net - "Official"将程序集部署到 GAC 的方法?

.net - 一场比赛后进行多场比赛

c# - 检查滚动条是否在数据 GridView 中可见

c# - 打开 "known file type"进入自定义应用程序的运行实例 - .NET

c# - .ActiveControl 和 .Focus 之间的区别以及各自的作用

c# - 从客户端的一个请求中删除所有相关的 OData 实体

c# - 对包含新添加的自定义类型的列表进行排序

c# - 找出两本词典之间的区别

c# - 在程序代码中安全地存储密码?

c# - 表单之间通信的最佳方式?