Восстановление приложений

Вы использовали API восстановления приложений с Vista?

http://msdn.microsoft.com/en-us/library/aa373347(VS.85).aspx

Считаете ли вы их надежными и с которыми легко работать?

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

10.12.2008 15:42:19
2 ОТВЕТА
РЕШЕНИЕ

Было бы полезно, если бы вы описали, почему вам нужно следить за этим.

Работает ли без присмотра без графического интерфейса? Тогда вы можете создать службу Windows вместо. Есть варианты перезапуска для служб уже в XP.

Это приложение с графическим интерфейсом, которое предоставляет некоторые фоновые услуги, даже если пользователь отсутствует? Подумайте о том, чтобы разделить его на службу Windows (которая должна работать постоянно) и приложение с графическим интерфейсом, которое может аварийно завершить работу, не влияя на работу службы.

Или вы пишете приложение "киоск", которое не может полагаться на пользователя, чтобы перезапустить его?

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

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

Поскольку обертка мала, риск ее падения также невелик. Но если это проблема для вас, реальное приложение, вероятно, может контролировать упаковку в обратном порядке.

2
17.01.2009 20:49:07

Единственный способ - иметь службу мониторинга приложения.

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

Фоновая служба может использовать WMI (работает на XP, Vista и т. Д.) Для мониторинга приложения. Когда он запускается, сколько памяти он использует, когда закрывается и т. Д.

0
10.12.2008 15:47:41