zoukankan      html  css  js  c++  java
  • wpf(dispather调度者)

    一.首先为什么要有dispather?

    wpf程序是有一个主线程多个子线程组成的。主线程负责创建ui界面,数据接收,处理事件,子线程负责处理消耗资源较多耗时的操作。然而子线程不能直接访问主线程那么这个时候就需要调度者dispather。

    System.Windows.Threading.DispatcherObject 类:大部分控件与其他类大多是继承 DispatcherObject 类,它提供了用于处理并发和线程的基本构造

    二.wpf启动的时候会加载2个线程:一个用于呈现用户界面,另一个用于管理用户界面。而我们通常面对的时ui线程。使用一个 WPF 对象,只能在创建它的线程上使用。在其他线程上使用它会导致引发运行时异常。 UI 线程的作用是用于接收输入、处理事件、绘制屏幕以及运行应用程序代码。

    同事dispatherobject提供了invoke(同步操作)和BeginInvoke(异步操作)来更新ui对象创建的信息。

    在后台(*.xaml.cs)的错误访问例子:

    通过下面方式修改

    意思是:获取当前对象的调度,通过invoke方法来实现对其他线程ui界面内容的更改。

    总结:

    DispatcherObject对象只能被创建它的线程所访问,其他线程修改 DispatcherObject需要取得对应的Dispatcher,调用Invoke或者BeginInvoke来投入任务

  • 相关阅读:
    P2731 骑马修栅栏 Riding the Fences
    P1351 联合权值
    [脚本]为所有节点挂载磁盘
    [转]expect的安装
    挂载磁盘linux
    [转]Mac 科研常用软件
    [转]error while loading shared libraries 错误解决办法总结
    linux安装SVN
    Java web项目在linux环境下自动编译和部署脚本
    个人所得税计算方法
  • 原文地址:https://www.cnblogs.com/anlegou/p/6384660.html
Copyright © 2011-2022 走看看