Приложение WPF не выполняет метод Application_Exit, когда пользователь закрывает главное окно - PullRequest
1 голос
/ 01 октября 2011

У меня есть приложение 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 ]

3 голосов
/ 01 октября 2011

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

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

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

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

1 голос
/ 03 октября 2011

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

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

...