• Control.Invoke 方法 (Delegate) :在拥有此控件的基础窗口句柄的线程上执行指定的委托。
  • Control.BeginInvoke 方法 (Delegate) :在创建控件的基础句柄所在线程上异步执行指定委托。

    就是一个是同步的一个是异步的,也就是一个需要等待一个不需要等待

//这个输出123
private void button1_Click(object sender, RoutedEventArgs e) {
textblock.Text += "";
this.Dispatcher.Invoke(new InvokeDelegate(Test));
textblock.Text += "";
} private void Test() {
textblock.Text += "";
} private delegate void InvokeDelegate(); //这个输出132
private void button1_Click(object sender, RoutedEventArgs e) {
textblock.Text += "";
this.Dispatcher.BeginInvoke(new InvokeDelegate(Test));
textblock.Text += "";
} private void Test() {
textblock.Text += "";
}

Invoke是线程中比较重要的一个东西,在多线程的编程中,平常在更新界面的时候,可以用UI线程去做来减轻工作线程的负担。比如下面这样放在线程中:

private void button1_Click(object sender, RoutedEventArgs e) {
Thread invokeThread = new Thread(new ThreadStart(Method));
invokeThread.Start();
//...运算代码
} private void Method(){
this.Dispatcher.BeginInvoke(new InvokeDelegate(Test));
} private void Test() {
textblock.Text += "";
} private delegate void InvokeDelegate();

简单写法如下:

private void button_Click(object sender, RoutedEventArgs e) {
this.Dispatcher.BeginInvoke(new Action(() => { this.textblock.Text += ""; }));
}

WPF Invoke与BeginInvoke的区别的更多相关文章

  1. WPF Invoke和BeginInvoke

    在WPF中Invoke和BeginInvoke和Winform中的是差不多的,只是一个用Control的一个用Dispatcher的. 而Invoke和BeginInvoke的区别嘛 就是一个是同步的 ...

  2. Invoke 和 BeginInvoke 的区别(转发)

    在Invoke或者BeginInvoke的使用中无一例外地使用了委托Delegate. 一.为什么Control类提供了Invoke和BeginInvoke机制? 关于这个问题的最主要的原因已经是do ...

  3. Invoke 与 BeginInvoke的区别

    引用文章路径:https://www.cnblogs.com/lsgsanxiao/p/5523282.html invoke和begininvoke 区别 一直对invoke和begininvoke ...

  4. C#中Invoke 和 BeginInvoke 的区别

    Control.Invoke 方法 (Delegate) :在拥有此控件的基础窗口句柄的线程上执行指定的委托. Control.BeginInvoke 方法 (Delegate) :在创建控件的基础句 ...

  5. C#异步编程のWPF Invoke和BeginInvoke

    我们先看个简单的例子: private void Window_Loaded(object sender, RoutedEventArgs e) { Console.WriteLine("B ...

  6. Invoke 和 BeginInvoke 的区别

    在Invoke或者BeginInvoke的使用中无一例外地使用了委托Delegate 一.为什么Control类提供了Invoke和BeginInvoke机制? 关于这个问题的最主要的原因已经是dot ...

  7. Invoke和BeginInvoke的区别(转载)

    转自http://www.cnblogs.com/c2303191/articles/826571.html Control.Invoke 方法 (Delegate) :在拥有此控件的基础窗口句柄的线 ...

  8. C#中Invoke和BeginInvoke的区别

    1.Invoke() 调用时,Invoke会阻止当前主线程的运行,等到 Invoke() 方法返回才继续执行后面的代码,表现出“同步”的概念. 2.BeginInvoke() 调用时,当前线程会启用线 ...

  9. WPF MVVM UI分离之《交互与数据分离》 基础才是重中之重~delegate里的Invoke和BeginInvoke 将不确定变为确定系列~目录(“机器最能证明一切”) 爱上MVC3系列~全局异常处理与异常日志 基础才是重中之重~lock和monitor的区别 将不确定变成确定~我想监视我的对象,如果是某个值,就叫另一些方法自动运行 将不确定变成确定~LINQ DBML模型可以对

    WPF MVVM UI分离之<交互与数据分离>   在我们使用WPF过程中,不可避免并且超级喜欢使用MVVM框架. 那么,使用MVVM的出发点是视觉与业务逻辑分离,即UI与数据分离 诸如下 ...

随机推荐

  1. docker 存储定义成direct-lvm 模式

    配置direct-lvm模式 1.  停止Docker systemctl stop docker 2.  安装依赖包 device-mapper-persistent-data,lvm2, and ...

  2. Bootstrap学习3--栅格系统

    备注:最新Bootstrap手册:http://www.jqhtml.com/bootstraps-syntaxhigh/index.html 目录1.简介2.栅格选项3.列偏移4.嵌套列5.列排序 ...

  3. python 数据结构中被忽视的小技巧

    一.一个包含N个元素的字符串.元组.序列.以及任何可迭代对象均可以拆分成N个单独的“变量” 1.字符串的拆分 #字符串 In [10]: s="abdefg" In [11]: o ...

  4. kNN算法及其python&R实现

    iris数据集,这一教科书级别的数据,分类前不需要做任何数据预处理什么的,相当的理想!但请注意你自己的数据99%的可能需要做预处理. 下面分别用R语言和Python来实现iris数据集的分类: R语言 ...

  5. 在Tomcat的安装目录下conf目录下的server.xml文件中增加一个xml代码片段,该代码片段中每个属性的含义与用途

    contex指上下文,实际上就是一个web项目:path是虚拟目录,访问的时候用127.0.0.1:8080/welcom/*.jsp访问网页,welcome前面要加/;docBase是网页实际存放位 ...

  6. js之Date(日期对象)

    通过日期对象我们可以进行一些对日期时间的操作处理 一.日期对象的创建: var myDate=new Date() 二.Date对象方法: Link:http://www.w3school.com.c ...

  7. Spark Structured Streaming框架(4)之窗口管理详解

    1. 结构 1.1 概述 Structured Streaming组件滑动窗口功能由三个参数决定其功能:窗口时间.滑动步长和触发时间. 窗口时间:是指确定数据操作的长度: 滑动步长:是指窗口每次向前移 ...

  8. Struts基本原理 + 实现简单登录(二)

    MVC 概念 MVC全名是Model View Controller,是模型(model)—视图(view)—控制器(controller)的缩写,知道这么多就够了. 大家都知道SUN公司对于MVC模 ...

  9. Eclipse快捷键与Notepad++ 快捷建冲突的问题

    notepad++添加了zen coding插件以后,notepad++默认的快捷键中Alt+/也是其快捷键中的一个,表示toggle comment,而用myeclipce或eclipse的朋友都知 ...

  10. JSON与AJAX的使用

    主要内容: 一.JSON数据 二.JSON字符串与Java对象的相互转换 三.JSON字符串与JavaScript对象的相互转换 四.AJAX异步加载 一.JSON数据 1.JSON语法规则: 2.J ...