Обработка события выхода WPF - PullRequest
15 голосов
/ 10 октября 2011

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

Возможно ли это?

Ответы [ 2 ]

33 голосов
/ 10 октября 2011

Вы можете перехватить событие Закрытие в главном окне следующим образом -

<Window Closing="Window_Closing">

И в вашем случае установите e.Cancel в значение true, чтобы остановить закрытие окна. В вашем случае вы можете сохранить какое-то поле, которое будет установлено, как только вы получите уведомление от клиента, что он сделал с cleanUp, и теперь можно безопасно закрыть окно. Просто установите это значение на e.Cancel

private void Window_Closing(object sender, CancelEventArgs e)
{
   e.Cancel = true;
}
0 голосов
/ 21 апреля 2018

Если вы хотите остановить завершение работы операционной системы или хотя бы очистить ее раньше, вам нужно обработать Application.SessionEnding .

Связанный: ОбработкаВыключение системы в WPF

...