Как я могу успешно остановить услугу, используя c#? - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь остановить службу, используя следующий код:

    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 () асинхронно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...