当用户关闭主窗口时,WPF应用程序不执行应用程序退出方法

当用户关闭主窗口时,WPF应用程序不执行应用程序退出方法,wpf,exit,mainwindow,Wpf,Exit,Mainwindow,我有一个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_St

我有一个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>

当应用程序用户关闭它时,它从不传入这段代码。这样行吗?我做错什么了吗?

我从来没有用过它,但我会这么说

在应用程序关闭之前发生,无法取消。 应用程序可能由于以下原因之一而关闭:

  • 调用应用程序对象的Shutdown方法 显式或由ShutdownMode属性确定
  • 用户通过注销或关闭来结束会话

因此,在您的情况下,这些条件可能不满足。你试过换一下吗?

我从来没用过它,但我会这么说

在应用程序关闭之前发生,无法取消。 应用程序可能由于以下原因之一而关闭:

  • 调用应用程序对象的Shutdown方法 显式或由ShutdownMode属性确定
  • 用户通过注销或关闭来结束会话

因此,在您的情况下,这些条件可能不满足。您是否尝试过更改?

应用程序\u退出方法将在您逐个应用程序关闭应用程序时调用。Current.shutdown()方法或关闭应用程序中的所有窗口。(当最后一个窗口关闭时,它将调用)


如果调用Application.Current.Shutdown()方法,它将自动关闭所有打开的窗口。请确保您的所有窗口都已关闭或未关闭?

当您逐个应用程序关闭应用程序时,将调用Exit方法。Current.shutdown()方法或关闭应用程序中的所有窗口。(当最后一个窗口关闭时,它将调用)


如果调用Application.Current.Shutdown()方法,它将自动关闭所有打开的窗口。请确保您的所有窗口是否都已关闭?

是否从任何位置更改代码隐藏中的关机模式=“OnExplicitShutdown”?如果是这样,它将不会直接调用应用程序_Exit事件,因为您必须显式调用Application.Current.Shutdown()方法。是否从任何位置更改代码隐藏中的ShutdownMode=“OnExplicitShutdown”?如果是这样,它将不会直接调用应用程序_Exit事件,因为您必须显式调用Application.Current.Shutdown()方法。谢谢!ShutdownMode=“OnMainWindowClose”是一个不错的选择!谢谢ShutdownMode=“OnMainWindowClose”是一个不错的选择!
    //it seems that it never passes here. Transferred to MainAppWindow_WindowClosing
    private void Application_Exit(object sender, ExitEventArgs e)
    {
        this.Dispatcher.BeginInvokeShutdown(DispatcherPriority.Background);
    }