了解WPF框架

  • Post author:
  • Post category:其他


首当其冲的,自然是System.Object类了。这里主要想说的是,WPF的大部分代码都是使用托管代码编写,原因是因为CLR的许多不错的特性(如内存管理、错误处理、通用类型系统等。),可以让开发的程序更有效、更健壮。但是,框架并不是所有代码都是托管的,也有一部分是由非托管代码编写。原因主要是因为WPF是展现层框架,它的显示需要和DirectX很紧密的集成起来,进行硬渲染和软渲染,以得到性能上的提升。

下面的结构图中,红色部分是属于WPF框架的。其中,只有milcore这个部分是采用非托管代码编写。所以,可以看出,我们在使用WPF的时候,是不会接触到里面的非托管代码的。

DispatcherObject(异步)

命令空间:System.Threading。     WPF Dispatcher使用User32的消息机制来实现跨线程调用。工作机制类似Win32的消息泵。     WPF的线程模型和User32的线程模型保持一致,使用STA。主要原因是互可操作性,因为现在的很多系统都是需要STA的,如IE、OLE2.0、剪贴板等。     通过Dispatcher,我们可以实现线程间的通信。继承自DispatcherObejct的类,都获取了一个所在线程的Dispatcher引用,这样,任何使用这个类的对象的线程,都可以使用它的Dispatcher来发送“消息”。 一般情况下,我们使用这个类的意图主要是异步线程调用DispatcherObject的Dispather来让DispatcherObject的创建线程做一些特定的事情,如设置界面上某个值。这样大大方便了我们开发人员。想想我原来用WindowsForm开发的时候,为了异步调用显示一下Label,写出来的代码真是够繁琐。



版权声明:本文为weixin_49983002原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。