как запустить приложение с обработкой ошибок при запуске Windows - PullRequest
0 голосов
/ 23 октября 2009

все. я получил проводной чехол у меня есть два консольных .net приложения. скажем, app1 и app2.

Я хочу, чтобы оба приложения запускались при запуске сервера Windows (без входа в систему мои два приложения будут запускаться автоматически)

но есть правила, app1 должно запускаться как минимум за 10 минут до app2. и любой из них падает, я хочу, чтобы они снова могли автоматически подняться

Кто-нибудь знает, как я могу это сделать ???

Ответы [ 3 ]

1 голос
/ 23 октября 2009

запуск таймера настройки app1. через 10 минут запустите app2 и перейдите в состояние app2_launched. затем используйте что-то вроде pid-файлов или общих объектов os для «мониторинга» друг друга

1 голос
/ 23 октября 2009

Во-первых, если ваши приложения должны работать без входа пользователя, это должны быть сервисы.

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

В случае сбоя App1, нужно ли остановить App2, запустить App1, а затем, через 10 минут, перезапустить App2? Или в этом случае, вы можете просто перезапустить App1 немедленно?

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

Если для App1 нормально знать о App2, вы могли бы иметь эту логику в App1. В этом случае приложение 1 будет иметь 2 обязанности (запускать себя и управлять состоянием службы App2).

С другой стороны, у вас может быть третий сервис, который отвечает только за управление жизненным циклом и работоспособностью сервисов App1 и App2. Это сторожевой таймер, который предлагает ChrisBD.

1 голос
/ 23 октября 2009

Единственный приемлемый способ, на мой взгляд, это иметь третий сервис, который действует как сторожевой таймер и запускается, когда другие сервисы запускаются.

Это должно будет обслуживаться другими процессами с регулярным "пульсом", чтобы предотвратить закрытие и перезапуск служб, которые он наблюдает.

...