WPF中的应用程序级别Application

 

wpf应用程序中有个application。这就是应用程序级别的概念。一个wfp程序就是一个application。即使是多个窗口的wpf程序也只有一个application。而且是程序内全部共享的

application包含一些基本的事件,比如启动,关闭,激活,失去激活等这些基本事件

比如启动事件Startup="":这个事件是在应用程序启动的时候触发的事件,比如说显示某个窗口或者做些某些附加的操作。但是如果只是为了显示某个窗口而已可以使用一个属性StartupUri;
退出事件Exit:退出应用程序的时候执行的事件
还有激活和失去激活事件Activated=""  Deactivated=""

application也有两个方法进行打开和关闭应用程序
application.run()和application.current.shutdown();


但是有一个特殊的退出机制。某些情况下应用程序是因为外部的原因终止退出的,比如计算机关机,死机,休眠等等这些情况。这个时候会引发这个事件SessionEnding

application是一个应用程序级别范围内的共享对象。因此可以存储一些程序内共有的资源和对象
应用程序提供 Properties 属性来公开可以在应用程序范围内共享的状态
// Set an application-scope property with a custom type CustomType customType = new CustomType(); Application.Current.Properties["CustomType"] = customType; ...
// Get an application-scope property // NOTE: Need to convert since Application.Properties is a dictionary of System.Object CustomType customType = (CustomType)Application.Current.Properties["CustomType"];

应用程序提供了 Resources 属性,以使开发人员可以在应用程序内共享 UI 资源
// Set an application-scope resource
Application.Current.Resources["ApplicationScopeResource"] = Brushes.White;
 // Get an application-scope resource
Brush whiteBrush = (Brush)Application.Current.Resources["ApplicationScopeResource"];


有时,应用程序可能在非正常条件下关闭,例如当引发意外的异常时。在此情况下,应用程序可能没有代码来检测和处理异常。这种类型的异常是未处理的异常;在应用程序关闭之前,将显示一个如下图所示的通知。

实现此支持的前提是能够检测到未处理的异常(对于该异常将引发 DispatcherUnhandledException 事件)。



下面是应用程序的生命周期图

WPF中的应用程序级别Application
这是xbap和桌面应用程序有些不同

WPF中的应用程序级别Application





你可能感兴趣的:(application)