Как отложить завершение работы приложения, когда пользователь выходит из системы или выключает Windows? - PullRequest
2 голосов
/ 15 июня 2010

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

Хотя я определенно провел некоторое исследование по этой теме, информация о том, как Windows обрабатывает закрытие приложения (http://msdn.microsoft.com/en-us/library/ms700677(VS.85).aspx), кажется немного рассеянной. Если у кого-нибудь есть пример наилучшего способа обработки это, или дополнительные знания по теме, я был бы очень признателен (у меня очень мало опыта работы с C #).

Спасибо !!

badPanda

Редактировать: Я знаю, что блокировка выключения не считается хорошей практикой. Это критически важное бизнес-требование для этого приложения.

Редактировать: По предложению нескольких комментаторов ниже (чтобы перепроектировать так, чтобы блокирование не требовалось), я использовал всплывающее окно NotifyIcon Balloon, чтобы информировать пользователей не закрываться, когда приложение отправляет данные. Хотя это вряд ли может помешать хранению данных на локальном компьютере в течение нескольких недель, я считаю, что это хороший компромисс между наилучшей практикой и требованиями бизнеса. В конце концов, если пользователи будут глупыми ... ну, пользователи будут глупыми.

Ответы [ 2 ]

2 голосов
/ 15 июня 2010

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

Это действительно похоже на работу для приложения для тонких клиентов на основе транзакций.

2 голосов
/ 15 июня 2010

Ну, статья MSDN, которую вы связали, объясняет это ясно: вы не можете предотвратить завершение работы Windows, если ваше приложение работает на Vista или Win7. Подсказка пользователя не будет работать, диалог будет недоступен. Вам нужно будет рассмотреть дизайн приложения, который занимается этим.

...