Application Events Sample : Application « Windows Presentation Foundation « C# / CSharp Tutorial

<Application x:Class="AppEventsSample.App"

using System;
using System.Windows;
using System.Data;
using System.Xml;
using System.Configuration;
using System.Diagnostics;
using System.Collections.ObjectModel;
using System.Text;
using System.IO;
using System.Collections.Specialized;
using System.Windows.Threading;

namespace AppEventsSample {
  public partial class App : Application {
    public readonly ObservableCollection<string> EventLog = new ObservableCollection<string>();

    public App() {
      this.Activated += new EventHandler(App_Activated);
      this.Deactivated += new EventHandler(App_Deactivated);
      this.DispatcherUnhandledException += new System.Windows.Threading.DispatcherUnhandledExceptionEventHandler(App_DispatcherUnhandledException);
      this.Exit += new ExitEventHandler(App_Exit);
      this.SessionEnding += new SessionEndingCancelEventHandler(App_SessionEnding);
      this.Startup += new StartupEventHandler(App_Startup);

      EventLog.CollectionChanged += EventLog_CollectionChanged;

    void EventLog_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) {
      using (StreamWriter writer = new StreamWriter(@"c:\a.txt", true)) {
        foreach (string item in e.NewItems) { writer.WriteLine(item); }

    void App_Startup(object sender, StartupEventArgs e) {
      StringBuilder args = new StringBuilder();
      for (int i = 0; i != e.Args.Length; ++i) {
        args.AppendFormat("arg[{0}]: '{1}' ", i, e.Args[i]);

      EventLog.Add("App_Startup: args= " + args);

    void App_SessionEnding(object sender, SessionEndingCancelEventArgs e) {
      EventLog.Add("App_SessionEnding: reason= " + e.ReasonSessionEnding.ToString());

      if (MessageBox.Show(e.ReasonSessionEnding.ToString(), "Session Ending", MessageBoxButton.OKCancel) == MessageBoxResult.Cancel) {
        e.Cancel = true;

    void App_Exit(object sender, ExitEventArgs e) {
      EventLog.Add("App_Exit: exit code=" + e.ApplicationExitCode.ToString());

    void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e) {
      EventLog.Add("App_DispatcherUnhandledException: " + e.Exception.Message);

      if (MessageBox.Show("Is exception handled?\r\n" + e.Exception.Message, "Exception", MessageBoxButton.YesNo) == MessageBoxResult.Yes) {
        e.Handled = true;

    void App_Activated(object sender, EventArgs e) {

    void App_Deactivated(object sender, EventArgs e) {

WPF Application Events Sample

24.127.1.Use Application.Current.Dispatcher.Invoke to throw an exceptionUse Application.Current.Dispatcher.Invoke to throw an exception
24.127.4.Application Exit eventApplication Exit event
24.127.5.Handle Application DispatcherUnhandledExceptionHandle Application DispatcherUnhandledException
24.127.6.Application Startup eventApplication Startup event
24.127.7.Store the variable in the application and get it backStore the variable in the application and get it back
24.127.8.Application.Current.Windows stores all windows you createdApplication.Current.Windows stores all windows you created
24.127.10.Implement Application.DoEvents in WPFImplement Application.DoEvents in WPF
24.127.11.Throw Application event from button click event handlerThrow Application event from button click event handler
24.127.12.Shut down the application in Window closing eventShut down the application in Window closing event
24.127.13.Menu with Application command: cut, copy, pasteMenu with Application command: cut, copy, paste
24.127.14.Use Application Command to edit RichTextBoxUse Application Command to edit RichTextBox
24.127.15.Exit current action with Application.Current.ShutdownExit current action with Application.Current.Shutdown
24.127.16.Set and get data from Application.Current.PropertiesSet and get data from Application.Current.Properties
24.127.17.Localizable Application by putting localized resource in XamlLocalizable Application by putting localized resource in Xaml
24.127.18.Application NavigationFailed eventApplication NavigationFailed event
24.127.19.Application Events SampleApplication Events Sample
24.127.20.Single Instance SampleSingle Instance Sample
24.127.21.StartupUri attributeStartupUri attribute
24.127.22.Using GetContentStreamUsing GetContentStream
24.127.23.Create and retrieve cookies from a Windows Presentation Foundation (WPF) application using SetCookie and GetCookie.Create and retrieve cookies from a Windows Presentation Foundation (WPF) application using SetCookie and GetCookie.
24.127.24.Get a handle to the current app and shut it downGet a handle to the current app and shut it down
24.127.25.extends Application
24.127.26.Commandline to compile WPF application
24.127.27.Add application exit event handler
24.127.28.Code Only WPF Application Sample
24.127.29.A Simple WPF Application, written XMAL-Free.
24.127.30.Inherit Application class and override OnStartup
24.127.31.Inherit Application class and listen to session ending event
24.127.32.Set SessionEndingCancelEventArgs.Cancel to true to cancel session ending event