если приложение wpf не отвечает, то автоматический перезапуск - PullRequest
2 голосов
/ 04 августа 2009

У меня есть приложение WPF, которое иногда дает сбой и говорит "не отвечает". Есть ли способ определить, не отвечает ли программа? И если так, перезапустите приложение WPF?

Это будет временное исправление, пока ошибки не будут исправлены.

Ответы [ 2 ]

15 голосов
/ 04 августа 2009

Вы можете использовать API-интерфейс Application Recovery & Restart Manager, который был представлен в Windows Vista. Это неуправляемый (C) API, однако есть управляемые оболочки, доступные в Windows API Code Pack .

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

Основное использование API заключается в добавлении следующей строки где-нибудь при запуске приложения:

ApplicationRestartRecoveryManager.RegisterForApplicationRestart( new RestartSettings( "restart", RestartRestrictions.None ) );
3 голосов
/ 04 августа 2009

Поскольку это временное исправление во время отладки приложения, одна из возможностей - обмануть и использовать приложение начальной загрузки / запуска, единственной задачей которого является наблюдение за проблемным приложением. Запустите проблемное приложение с помощью метода Start класса System.Diagnostics.Process, а затем периодически отслеживайте возвращенное свойство Process 'Responding. Если не отвечает, делай то, что тебе нужно.

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

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