Mega Code Archive

 
Categories / C# / WPF
 

Application Events Sample

<Application x:Class="AppEventsSample.App"     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"     StartupUri="Window1.xaml">     <Application.Resources>               </Application.Resources> </Application> //File:Window.xaml.cs 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);       File.Delete(@"c:\a.txt");       EventLog.CollectionChanged += EventLog_CollectionChanged;       EventLog.Add("App()");     }     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) {       EventLog.Add("App_Activated");     }     void App_Deactivated(object sender, EventArgs e) {       EventLog.Add("App_Deactivated");     }   } }