Поделиться через


Изменения завершения работы в Windows Vista

В следующей таблице перечислены различия между завершением работы в Windows Vista и Windows XP.

Компонент Windows XP Windows Vista
Блокировка завершения работы Приложения могут задерживать реагирование на WM_QUERYENDSESSION на 5 секунд, после чего система позволяет пользователю завершить работу приложения. Приложения, возвращающие значение TRUE в ответ на WM_QUERYENDSESSION , могут задержать ответ на WM_ENDSESSION на 5 секунд, после чего система позволяет пользователю завершить работу приложения. Приложения могут отложить реагирование на WM_QUERYENDSESSION на 5 секунд, после чего система позволяет пользователю продолжить или отменить завершение работы. Приложения, возвращающие значение TRUE в ответ на WM_QUERYENDSESSION , могут отложить ответ на WM_ENDSESSION на 5 секунд, после чего система позволяет пользователю продолжить или отменить завершение работы.
Отмена завершения работы Если приложение возвращает значение FALSE в ответ на WM_QUERYENDSESSION, завершение работы в большинстве случаев отменяется. Однако пользовательский интерфейс не отображается, поэтому пользователь может не знать, что завершение работы отменено. Если приложение возвращает значение FALSE в ответ на WM_QUERYENDSESSION, оно по-прежнему отображается в пользовательском интерфейсе завершения работы. Обратите внимание, что система не разрешает консольным приложениям или приложениям без видимого окна отменять завершение работы. Эти приложения автоматически завершаются, если они не отвечают на WM_QUERYENDSESSION или WM_ENDSESSION в течение 5 секунд или если они возвращают значение FALSE в ответ на WM_QUERYENDSESSION.
Завершение работы пользовательского интерфейса Система отображает диалоговое окно для каждого приложения, блокирующего завершение работы. Если пользователь нажимает кнопку Завершить сейчас, приложение завершается. Если пользователь нажимает кнопку Отмена , завершение работы отменяется и приложение продолжает работать. Система отображает полноэкранный пользовательский интерфейс, который определяет все приложения, блокирующие завершение работы, и их причины (если они зарегистрировали причину с помощью ShutdownBlockReasonCreate).

 

Рекомендации

  • Приложения не должны блокировать завершение работы. Как можно быстрее реагировать на WM_QUERYENDSESSION и откладывать действия по очистке до обработки сообщения WM_ENDSESSION .
  • Приложения, которые должны блокировать завершение работы, должны использовать новую функцию ShutdownBlockReasonCreate для регистрации строки, объясняющей причину для пользователя. Пользователь может решить, следует ли продолжить или отменить завершение работы.
  • Приложения не могут полагаться на блокировку завершения работы.