2012-01-14 2 views
0

Я создаю небольшое приложение для киоска для установки выставки. Я разрабатываю в .Net & C#, и компьютер будет работать под управлением Windows 7.Windows .Net application crash watchdog

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

спасибо!

ответ

0

Самый простой способ - написать приложение для киоска, чтобы оно не зависало и не зависало. Зачем тратить время на создание сторожевого пса, у которого могут быть свои проблемы, когда вы можете потратить время на то, чтобы приложение, которое вы смотрите, пуленепробиваемое?

+0

, конечно, я делаю это. Я не проектирую систему таким образом, чтобы авария была частью ее функциональности. но в реальном мире вы никогда не знаете - так что в случае сбоя (по какой причине когда-либо) я хочу справиться с этим. – Mat

+2

Я с @ Мат - ты не носишь ремень безопасности, потому что ты будешь рухнуть, ты носишь его, потому что независимо от того, насколько ты осторожен, ты не можешь * гарантировать *, что этого не произойдет ... – Murph

+1

Напоминает мне о времени, когда кто-то из моей группы продуктов сказал: «Давайте, чтобы ключ f5 обновил окно ui, если он не синхронизируется с моделью данных». Мой ответ: «Почему бы нам просто не исправить ошибки, из-за которых он перестает синхронизироваться?» – selbie

0

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

Если это так, я бы написал небольшое приложение-оболочку, которое фактически запущено, и когда оно будет запущено, оно запустит приложение киоска как отдельный процесс, а затем перейдет в цикл, где он проверяет на здоровье приложения киоска каждые несколько секунд, а затем переходит в режим сна (thread.idle, doevents, независимо от того, что необходимо).

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

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