Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

WPF app does not execute Application_Exit method when user closes main window

I have a WPF/C# 4.0 App which has an Application file XAML that is:

<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>

And its exiting method is:

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

It never passes in this piece of code when the application user closes it. Is it supposed to work this way? Am I doing something wrong?

like image 788
sergiol Avatar asked Sep 15 '25 01:09

sergiol


2 Answers

I have never used it but the docs say that

Occurs just before an application shuts down, and cannot be canceled. An application can shut down for either of the following reasons:

  • The Shutdown method of the Application object is called, either explicitly or as determined by the ShutdownMode property.
  • The user ends the session by logging off or shutting down.

So in your case, these conditions might not be met. Have you tried changing the ShutDownMode?

like image 56
bitbonk Avatar answered Sep 16 '25 17:09

bitbonk


Application_Exit method will call when you shutdown the application by Application.Current.Shutdown() method or close all windows from your application. (it will call when last window will be closed).

If you call Application.Current.Shutdown() method then it will automatically close all opened windows. Pleaese make sure that your all windows are closed or not ?

like image 44
Upendra Chaudhari Avatar answered Sep 16 '25 16:09

Upendra Chaudhari