Перезапуск службы Windows внутри себя - PullRequest
0 голосов
/ 11 февраля 2011

У меня есть служба Windows, которая вызывает тяжелую обработку изображений всякий раз, когда пользователь отправляет на нее какие-либо данные.Таким образом, если существует более одного данные, данные помещаются в очередь и обрабатываются по порядку.однако иногда обработка данных может привести к ошибкам, и обработка зависает там навсегда.Еще не уверен, почему это происходит.Когда это происходит, я хочу перезапустить службу самостоятельно, чтобы при перезапуске службы была выбрана следующая из очереди.Мой вопрос - это хорошая идея перезапустить службу внутри себя?Вы можете даже сделать это или есть другой способ сделать это?

Сапна

Ответы [ 2 ]

0 голосов
/ 11 февраля 2011

у вас есть три задачи:

  1. обнаруживает, что служба застряла: это можно сделать по-разному, в первую очередь использовать таймауты
  2. перезапустите сервис: может быть сделано отдельной службой мониторинга или другим потоком той же службы
  3. обработка очереди задач между различными экземплярами службы: вам нужно сериализовать вашу очередь задач на диск, чтобы при перезапуске службы она могла продолжить обработку очереди
0 голосов
/ 11 февраля 2011

Как сказал Одед в своем комментарии, если служба зависла, она не может перезапустить себя.Было бы лучше, если бы вы могли выяснить, почему он зависает, и просто остановить его от зависания, но при условии, что по какой-то причине это невозможно.

Два варианта, о которых я могу подумать, заключаются в том, что обработка изображениясделано в потоке, и только этот поток зависает, тогда вы можете иметь отдельный поток "мониторинга", который продолжает проверять, все ли поток обработки все еще доволен, и в противном случае он убивает его и перезапускает.Или, если вся служба зависает, у вас может быть отдельная служба мониторинга, которая выполняет проверку и перезапуск.

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