Как настроить мой сервер exe продолжать работать - PullRequest
3 голосов
/ 03 февраля 2012

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

Для этого я создал другой процесс, который продолжает проверять (например, каждый2 минуты) в списке процессов для этого конкретного имени процесса, и в случае, если он не найден, он запустит этот процесс.

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

Из-за некоторых ограничений я не смог развернуть свой серверный процесс как службу Windows, это приложение формы Windows.

Спасибо.

Ответы [ 2 ]

4 голосов
/ 05 февраля 2012

Вы не опубликовали никакого кода, но упомянули «продолжайте проверять список процессов каждые две минуты». Я думаю, что лучшим решением было бы, чтобы ваш сторожевой процесс был просто родительским процессом. Это вызвало бы CreateProcess , чтобы запустить ваш EXE как дочерний процесс. Затем создайте WaitForSingleObject для дескриптора дочернего процесса. Как только WaitForSingleObject вернется (сигнализируя о выходе из дочернего процесса), он просто перезапустит его.

.Net-эквивалентами CreateProcess и WFSO являются Process.Start и Process.WaitForExit .

2 голосов
/ 03 февраля 2012

Как вы говорите, решение далеко от оптимального.Службы Windows имеют автоматический перезапуск.

В вашем случае я бы запустил процесс наблюдения за вашей собакой из планировщика задач Windows, чтобы избежать проблем в случае смерти вашей собаки.

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