WPF Invoke和BeginInvoke
2024-08-25 21:28:09
在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 += ""; }));
}
最新文章
- 云存储性能测试工具--COSBench安装
- win7,win8.1下hosts文件无法修改的快速解决办法
- 服务器bonding
- open行情
- 【Mood-10】每个程序员都应该读的30本书
- 【SQLServer】将Job运行结果发送电子邮件通知用户
- .net开发---自定义页面打印区域
- 找不好重现的bug的一个小技巧————守株待兔
- C#程序:如何创建xml文件以及xml文件的增、删、改、查
- 谈一谈struts2和springmvc的拦截器
- linux平台下Hadoop下载、安装、配置
- Web前端学习(4):显示图片、url与文件路径
- [Luogu2617]Dynamic Ranking
- 从头开始搭建一个VSCode+NetCore的项目
- Thinkphp生成的验证码不显示——解决方法
- ArcGIS中的坐标系:基本概念和常用操作(一)
- 如何刻录cd音乐
- jQuery 查找元素1
- github笔记
- Practical Node.js (2018版) 第5章:数据库 使用MongoDB和Mongoose,或者node.js的native驱动。
热门文章
- docker,构建nginx反向代理tomcat
- centos7 docker镜像加速器配置
- 原!!关于java 单元测试Junit4和Mock的一些总结
- tpot从elastic search拉攻击数据之三 用于拉取的java程序
- git 设置 .gitignore 为全局global + 配置.gitignore为全局后不生效解决办法
- 使用 Python 编写 vim 插件
- 【我的Android进阶之旅】 解决bug: Expected file scheme in URI: content://downloads/my_downloads/12
- 001-ant design pro安装、目录结构、项目加载启动【原始、以及idea开发】
- python2中range和xrange的区别
- ServiceModel 元数据实用工具 (Svcutil.exe)