<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");
}
}
}