浅析C#(WPF)中的Application类

Application类
封装WFP应用程序。
命名空间:System.Windows
语法:public class Application : DispatcherObject, IQueryAmbient
可以看到Application继承了DispatcherObject类和IQueryAmbient接口。

首先看一下DispatcherObject类
DispatcherObject类
表示与Dispatcher关联的对象
命名空间:System.Windows.Threading
语法:pulic abstract class DispatcherObject

那么Dispatcher又是什么呢?
Dispatcher类
提供用于管理线程工作项队列的服务
语法:public sealed class Dispatcher

这里特别谈一下Dispatcher的Invoke方法(Action)
执行指定的Action的线程同步Dispatcher与之关联。
那么Action又是什么呢?

Action委托
封装一个方法,该方法不具有参数并且不返回值。
语法:public delegate void Action()

接下来看一下IQueryAmbient接口
IQueryAmbient接口
查询是否将指定的属性视为当前范围中的环境属性。
命名空间:System.Windows.Markup
语法:public interface IQueryAmbient

下面介绍几个Application类的属性
Current属性
获取当前AppDomain的Application对象
语法:public static Application Current { get; }
Dispatcher属性
获取与此 DispatcherObject 关联的 Dispatcher。 (继承自 DispatcherObject。)
通过以上基础知识的储备,我们可以写出这样的代码:

System.Windows.Application.Current.Dispatcher.Invoke(new Action(() =>
{
    StartCpuShow();
}));

上诉代码中用到了lambda表达式,如有疑问,可以参阅博客“浅析C#中的Lambda表达式”

你可能感兴趣的:(C#)