zoukankan      html  css  js  c++  java
  • 关于WPF Dispatcher

    做WPF的童鞋经常看到Dispatcher,而Dispatcher到底是什么呢?

    MSDN解释是“为一个线程提供管理任务队列的一个服务”。一个Dispatcher在一个指定线程中,维护了一个拥有优先级队列任务的队列。当一个Dispatcher在一个线程中被构造,那就成了唯一可以和线程交互的对象,即使该服务被关闭以后也是如此。

    如果想在当前的线程中得到与之交互的CurrentDispatcher,而Dispatcher又不在这个线程中,将一个Dispatcher将被创建。但如果Dispatcher被关闭了,它将不能被重启。

    在WPF里,一个DispatcherObject只能被和它相关的Dispatcher里进行交互。举个例子,一个后台线程不能改变一个按钮的Content属性,因为这个按钮是和UI线程相关联,如果想在后台线程访问这个按钮的Content属性,后台线程需要将这个任务委托给UI线程相关的Dispatcher。可以使用Invoke(同步)或者BeginInvoke(异步)来实现。这个操作将以一个指定的优先级被加入到Dispatcher队列里。

    如果一个Dispatcher被关闭后调用BeginInvoke,被返回的状态属性DispatcherOperation将被设为Aborted.

    Dispatcher所有的方法都和Thread无关,可以跨线程使用。
    继承于DispatcherObject的对象都和线程有关,不能跨线程使用。
    继承于Freezable在被冻结的时候可以跨线程使用。

  • 相关阅读:
    理解极大似然估计(MLE)
    模型评估——ROC、KS
    tf.estimator.Estimator类的用法
    TensorFlow中数据读取之tfrecords
    常用数据库的启动与关闭
    几种常见的损失函数
    目标检测模型的性能评估--MAP(Mean Average Precision)
    正则化如何防止过拟合
    Android学习笔记之ConnectivityManager+NetWorkInfo
    关于2015年的相关总结
  • 原文地址:https://www.cnblogs.com/jljxxf/p/3129450.html
Copyright © 2011-2022 走看看