c# - 如何使用 c# 成功停止服务?
问题描述
我正在尝试使用以下代码停止服务:
public static void StopService(string name, out string message)
{
message = string.Empty;
EndTask();
ServiceController sc = new ServiceController();
sc.ServiceName = name;
if (sc.Status == ServiceControllerStatus.Running)
{
try
{
sc.Stop();
sc.WaitForStatus(ServiceControllerStatus.Stopped);
}
catch (Exception e)
{
throw ex;
}
}
else
{
message = $"The service has been stopped.";
}
}
EndTask() 定义如下:
public static void EndTask()
{
string taskname = "myservice.exe";
string processName = taskname.Replace(".exe", "");
foreach (Process process in Process.GetProcessesByName(processName))
{
process.Kill();
}
}
但我偶尔会收到以下错误
无法停止计算机“.”上的 mytestservice 服务。
内部异常:System.ComponentModel.Win32Exception (0x80004005):管道已结束”
这与 EndTask 例程有关吗?我需要异步运行 EndTask() 吗?
解决方案
推荐阅读
- javascript - 如何在点击事件上触发 jQuery 函数,但仅在页面加载后?
- java - 如何通过 Weblogic Java API 检索 Weblogic 的 Deployment 测试点
- c++ - 加号运算符的 C++ 重载
- webpack - 如何让 Font Awesome 5 与 webpack 一起工作
- javascript - 使用jQuery将数据从一个表的选定行复制到另一个表
- c - mingw-w64 C版支持吗?
- excel - 逐行读取csv流,为Excel Range创建数组
- c# - 无法跟踪在 CustomControl WPF 中的列表中添加/删除项目
- r - 使用for循环变量访问数组中的元素在R中产生NA
- firebase - 在 Angular 6 中修改其他用户