WPF 多线程
1.多线程模型
WPF元素具有线性相关性,创建WPF元素的线程拥有所创建的元素,其他线程不能直接与这些WPF元素进行交互(元素是在窗口中显示的WPF对象)
具有线程相关行的WPF对象都在类的层次的某个位置上继承子DispatcherObject类。
线程运行整个应用程序并拥有所有的WPF对象。虽然可以使用单独线程显示单独窗口,但这种设计很少用。
2.Dispatcher类
调度程序(dispatcher)管理在WPF应用程序中发生的操作。调度程序拥有应用程序线程,并管理工作项队列。
当应用程序运行时,调度程序接受新的工作请求,并且一次执行一个任务。
大多应用程序都保持坚持简单的使用一个拥护节目线程和一个调度程序,然后使用多线程管理数据操作和其他后台任务。
3.DispatcherObject类
大多情况下,不会直接与调度程序交互。但会花费大量时间使用DispatcherObject类的实例,因为每个WPF可视化对象都继承自这个类。
DispatcherObject实例是链接到调度程序的简单对象,是绑定到调度程序线程的对象。
DispatcherObject类成员:
Dispatcher 返回管理该对象的调度程序。
CheckAccess() 如果代码在正确的代码上使用对象,就返回true,否则false
VeriftyAccess() 如果代码在正确的线程上使用对象,就什么也不做,否则抛出InvalidOperationException。