Перезапуск службы Windows - PullRequest
1 голос
/ 09 марта 2009

Я хочу запланировать перезапуск моих пользовательских сервисов автоматически с использованием командного файла с net stop, net start.

Когда запускается net stop, он прерывает все, что делается немедленно

Просто интересно, что будет, если в середине обработки?

Malcolm

Ответы [ 5 ]

1 голос
/ 09 марта 2009

Он будет вызывать ваш код асинхронно, и вам решать, что с ним делать. Вы можете провести чистку или прервать по своему усмотрению.

1 голос
/ 09 марта 2009

Это действительно зависит от того, как реализован сервис. «net stop», по сути, звонит в сервис и говорит: «Не могли бы вы остановиться». Большинство служб выполнят эту команду и своевременно остановятся. Однако есть плохие сервисы, которые не соответствуют и отказываются останавливаться. В этом случае чистый стоп больше не будет предпринимать никаких действий.

0 голосов
/ 09 марта 2009

Как говорили другие, когда вы вызываете net stop, он вызывает OnStop в службе Windows. Если OnStop не уничтожает все потоки в приложении или не закрывает все должным образом, ваша служба может не остановиться. (Я видел, как это происходило в одном из наших сервисов WCF: мы не закрывали ServiceHost в OnStop, и поэтому приложение не остановилось по нашей команде - нам пришлось бы убить процесс вручную.)

Один из распространенных шаблонов, которые я видел, - это попытка вызвать останов службы, а если она не прекратит работу в течение тайм-аута (10 секунд), принудительно завершить процесс. В качестве альтернативы пакетным файлам PowerShell имеет довольно хорошую поддержку для работы со службами.

0 голосов
/ 09 марта 2009

Служба регистрируется для получения событий (через RegisterServiceCtrlHandler). Когда вы делаете остановку сети, зарегистрированный обратный вызов получит обратный вызов с помощью операции SERVICE_CONTROL_STOP. Как служба реагирует на этот обратный вызов, зависит от реализации сервиса. Для службы имеет смысл регулярно обрабатывать завершение работы приложения.

0 голосов
/ 09 марта 2009

Это действительно зависит от сервиса. Я подозреваю, что большинство будет пытаться войти в хорошее состояние, прежде чем остановиться. Это не убийство.

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