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来投入任务

  • 相关阅读:
    linux各文件夹的作用
    CodeIgniter的URL传过来的中文参数处理错误的修复
    syn_ack攻击
    分治排序
    Linux Shell学习笔记
    sql题型
    jquery ajax
    json 字符串与对象之间的转换
    常用的VIM命令列表 移动光标
    visual c++ 2012 内存泄漏检测方法
  • 原文地址:https://www.cnblogs.com/anlegou/p/6384660.html
Copyright © 2011-2022 走看看