![WPF专业编程指南](https://wfqqreader-1252317822.image.myqcloud.com/cover/420/654420/b_654420.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.3 WPF应用程序的启动和终止
表1-1列出了和应用程序生存期相关的事件和方法,通常在相关事件发生时,WPF首先调用Application类中的相应方法,然后再产生相关事件。所以,这些方法常常有相应的事件相对应。例如OnActivated方法和Activated事件、OnDeactivated方法和DeActivated事件,等等。
要考察WPF应用程序的启动和终止过程,有两种方法:其一是从Application类中派生出自己的类,并使用虚函数覆盖技术来观察Application类在运行时调用虚函数的过程;其二是处理Application类中的相关事件。
表1-1 Application类中与应用程序生存期相关的事件
![](https://epubservercos.yuewen.com/6A757F/3590270704434301/epubprivate/OEBPS/Images/figure_0018_0001.jpg?sign=1739006565-75awXvpvHd68XAZXgwzp8xSgAvcIXLGy-0-e0cb42269196695ec74ce2095ff5efa9)
让我们来看看第一种方法:
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所示。
![](https://epubservercos.yuewen.com/6A757F/3590270704434301/epubprivate/OEBPS/Images/figure_0019_0001.jpg?sign=1739006565-RsWWjmuY6uTn6r5WInQWyIcQByilQNQ8-0-6ab285d3f26a51e9c169c13ec2cc87f8)
图1-3 考察Application中的事件