在WPF中Invoke和BeginInvoke和Winform中的是差不多的,只是一个用Control的一个用Dispatcher的。

而Invoke和BeginInvoke的区别嘛 就是一个是同步的一个是异步的,也就是一个需要等待一个不需要= =

就比如一个最简单区别的例子:

//这个输出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 += ""; }));
}

最新文章

  1. 云存储性能测试工具--COSBench安装
  2. win7,win8.1下hosts文件无法修改的快速解决办法
  3. 服务器bonding
  4. open行情
  5. 【Mood-10】每个程序员都应该读的30本书
  6. 【SQLServer】将Job运行结果发送电子邮件通知用户
  7. .net开发---自定义页面打印区域
  8. 找不好重现的bug的一个小技巧————守株待兔
  9. C#程序:如何创建xml文件以及xml文件的增、删、改、查
  10. 谈一谈struts2和springmvc的拦截器
  11. linux平台下Hadoop下载、安装、配置
  12. Web前端学习(4):显示图片、url与文件路径
  13. [Luogu2617]Dynamic Ranking
  14. 从头开始搭建一个VSCode+NetCore的项目
  15. Thinkphp生成的验证码不显示——解决方法
  16. ArcGIS中的坐标系:基本概念和常用操作(一)
  17. 如何刻录cd音乐
  18. jQuery 查找元素1
  19. github笔记
  20. Practical Node.js (2018版) 第5章:数据库 使用MongoDB和Mongoose,或者node.js的native驱动。

热门文章

  1. docker,构建nginx反向代理tomcat
  2. centos7 docker镜像加速器配置
  3. 原!!关于java 单元测试Junit4和Mock的一些总结
  4. tpot从elastic search拉攻击数据之三 用于拉取的java程序
  5. git 设置 .gitignore 为全局global + 配置.gitignore为全局后不生效解决办法
  6. 使用 Python 编写 vim 插件
  7. 【我的Android进阶之旅】 解决bug: Expected file scheme in URI: content://downloads/my_downloads/12
  8. 001-ant design pro安装、目录结构、项目加载启动【原始、以及idea开发】
  9. python2中range和xrange的区别
  10. ServiceModel 元数据实用工具 (Svcutil.exe)