Служба Windows C # самостоятельно завершает службу - PullRequest
6 голосов
/ 01 августа 2011

Как у вас сервис самоуничтожиться?

Environment.Exit приведет к запуску приложения, но служба продолжает работать.

Есть идеи?

1 Ответ

15 голосов
/ 01 августа 2011

Вы можете использовать SCM для отключения вашего сервиса изнутри самого сервиса:

System.ServiceProcess.ServiceController svc = new System.ServiceProcess.ServiceController("NameOfYourService");
svc.Stop();

Edit:

Другим вариантом является вызов ServiceBase.Stop() в вашем сервисе - если у вас есть доступ к экземпляру производного класса ServiceBase, который был бы более чистым способом - во многих случаях это было бы громоздко, хотя необходимость обойти эту зависимость.

Если у вас есть неперехваченное исключение, я лично позволю сервису аварийно завершить работу (или зарегистрирую его, а затем throw), что оставит сообщение в журнале событий с подробным описанием причины прекращения. Если вам абсолютно необходимо, вы можете поймать исключение, а затем позвонить ServiceBase.Stop().

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