#c_sharp #service
При старте службы windows возникает критическая ошибка требующая останова еще не стартовавшей службы. Ошибку логирую. Но что делать с ней дальше? Как сообщить windows, чтобы она не считала службу запущенной? Можно ли как то информировать пользователя о том что служба не запущена? Спасибо.
Ответы
Ответ 1
Если сервис не смог корректно запуститься - то достаточно просто остановить его из кода, вызовом Stop(): protected override void OnStart(string[] args) { // случилась ошибка? this.Stop(); } Он перейдет обратно в Stopped. Если при этом попытка запуска была инициирована пользователем - тому покажется стандартное сообщение вида The Service12 service on Local Computer started and then stopped. Some services stop automatically if they are not in use by other services or programs.Ответ 2
Насколько я понял: У вас при инициализации службы происходит критическая ошибка. Вы с помощью try/catch её перехватываете, пишете сообщение в лог. В этот момент остановить службу вы не можете, так как она еще не запустилась. Возможные решения: Заведите переменную типа bool, и при вызове метода OnStart проверяйте её значение. В OnStart вы можете остановить службу. Я бы посоветовал вам не использовать код, который может привести к ошибке, в конструкторе. По возможности, постарайтесь перенести его в метод OnStart.
Комментариев нет:
Отправить комментарий