Приложение WPF не выполняет метод Application_Exit, когда пользователь закрывает главное окно

У меня есть приложение WPF/C# 4.0 с файлом приложения XAML:

<Application 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="XXX.App"
Startup="Application_Startup"
Exit="Application_Exit"
>
<Application.Resources>

</Application.Resources>

И его метод выхода:

    //it seems that it never passes here. Transferred to MainAppWindow_WindowClosing
    private void Application_Exit(object sender, ExitEventArgs e)
    {
        this.Dispatcher.BeginInvokeShutdown(DispatcherPriority.Background);
    }

Он никогда не передается в этом куске кода, когда пользователь приложения закрывает его. Это должно работать так? Я делаю что-то неправильно?

Заранее спасибо,

Сержио

2 ответа

Решение

Я никогда не использовал это, но документы говорят, что

Происходит непосредственно перед закрытием приложения и не может быть отменено. Приложение может быть закрыто по одной из следующих причин:

  • Метод Shutdown объекта Application вызывается либо явно, либо в соответствии со свойством ShutdownMode.
  • Пользователь завершает сеанс, выходя из системы или завершая работу.

Так что в вашем случае эти условия могут не соблюдаться. Вы пытались изменить ShutDownMode?

Метод Application_Exit будет вызываться, когда вы выключаете приложение с помощью метода Application.Current.Shutdown() или закрываете все окна вашего приложения. (он будет вызываться, когда будет закрыто последнее окно).

Если вы вызываете метод Application.Current.Shutdown(), он автоматически закроет все открытые окна. Пожалуйста, убедитесь, что все ваши окна закрыты или нет?

Другие вопросы по тегам