ServiceController.Stop () не может остановить службу - PullRequest
0 голосов
/ 27 января 2011

У меня есть служба Windows, которую я пытаюсь программно прекратить, используя ServiceController.Stop():

ServiceController sc = new ServiceController(<ServiceName>);                    
sc.Stop();
sc.Refresh();

Однако, когда я вижу эту службу в списке служб, ее статус все еще остается как «Запущено»,Если я вызываю метод sc.WaitForStatus() для ожидания изменения статуса на «Остановлено», то этот статус никогда не достигается.

Что происходит?

1 Ответ

1 голос
/ 28 января 2011

Я думаю, что проблема была с устаревшим кодом.

Нам нужна некоторая конфигурация, и требование заключается в том, что если конфигурация отсутствует в файле конфигурации, служба не должна запускаться. Эта проверка была сделана в OnStart(). ServiceController.Stop() вызывался из самого метода OnStart() всякий раз, когда проверка не удалась! Я думаю, именно поэтому ServiceController.Stop() не смог остановить службу, и я никогда не получал статус «Остановлен» при вызове метода WaitForStatus().

Я изменил логику, и теперь я не вызываю ServiceBase.Run() метод (который вызывает OnStart()), если необходимая конфигурация отсутствует.

Унаследованный код пытался остановить службу из метода Start!

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