Я пытаюсь остановить службу, используя следующий код:
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 () асинхронно?