1.3 WPF应用程序的启动和终止
表1-1列出了和应用程序生存期相关的事件和方法,通常在相关事件发生时,WPF首先调用Application类中的相应方法,然后再产生相关事件。所以,这些方法常常有相应的事件相对应。例如OnActivated方法和Activated事件、OnDeactivated方法和DeActivated事件,等等。
要考察WPF应用程序的启动和终止过程,有两种方法:其一是从Application类中派生出自己的类,并使用虚函数覆盖技术来观察Application类在运行时调用虚函数的过程;其二是处理Application类中的相关事件。
表1-1 Application类中与应用程序生存期相关的事件
让我们来看看第一种方法:
using System; using System.Collections.Generic; using System.Text; using System.Windows; namespace Yingbao.Chapter1 { public class HelloWPF { [STAThread] public static void Main() { Window win = new Window(); win.Title = "WPF application"; win.Content = "Hello WPF!"; Application app = new MainApp(); app.Run(win); } } public class MainApp:Application { public MainApp() : base() { } protected override void OnActivated(EventArgs e) { Console.WriteLine("OnActivated"); base.OnActivated(e); } protected override void OnExit(ExitEventArgs e) { Console.WriteLine("OnExit"); base.OnExit(e); } protected override void OnDeactivated(EventArgs e) { Console.WriteLine("OnDeactivated"); base.OnDeactivated(e); } protected override void OnStartup(StartupEventArgs e) { Console.WriteLine("OnStartup"); base.OnStartup(e); } protected override void OnSessionEnding(SessionEndingCancelEventArgs e) { Console.WriteLine("OnSessionEnding"); base.OnSessionEnding(e); } } }
这段程序的运行结果如图1-3所示。
图1-3 考察Application中的事件