[C#]this.Invoke和this.BeginInvoke的区别
private void button1_Click(object sender, EventArgs e)
{
this.textBox1.Text = ""; this.Invoke(new EventHandler(delegate {
this.textBox1.Text += "";
})); this.textBox1.Text += "";
}
结果为:123
private void button1_Click(object sender, EventArgs e)
{
this.textBox1.Text = ""; this.BeginInvoke(new EventHandler(delegate {
this.textBox1.Text += "";
})); this.textBox1.Text += "";
}
结果为132
结论:1、Invoke会阻止当前主线程的运行;BeginInvoke不会阻止当前主线程的运行,而是等当前主线程做完事情之后再执行BeginInvoke中的代码内容。
2、这2个方法都是由主线程运行的,并不是异步执行,如果代码耗时过长,同样会造成界面卡死
Invoke阻止的是工作线程,相当于阻塞式(非创建控件线程或主线程),BeginInvoke是不等待主线程完成变立刻返回执行下面操作,相当于异步式。
这里的阻塞或异步是相对于工作线程,而非主线程。
它阻塞或异步的是调用Invoke或BeginInvoke的线程。
[C#]this.Invoke和this.BeginInvoke的区别的更多相关文章
- this.Invoke和this.BeginInvoke的区别
private void button1_Click(object sender, EventArgs e) { "; this.Invoke(new EventHandler(delega ...
- 关于控件的Invoke(...)方法和BeginInvoke(...)方法的区别
这两个方法最主要的区别就是一个是同步,一个是异步,即会阻塞线程,那么阻塞哪个线程呢?我们用代码来分析(工具是VS2010) using System; using System.Collections ...
- (转)C#为什么要使用Invoke,它和BeginInvoke有什么区别
在Invoke或者BeginInvoke的使用中无一例外地使用了委托Delegate. 一.为什么Control类提供了Invoke和BeginInvoke机制? 关于这个问题的最主要的原因已经是do ...
- C#中Invoke 和 BeginInvoke 的区别
Control.Invoke 方法 (Delegate) :在拥有此控件的基础窗口句柄的线程上执行指定的委托. Control.BeginInvoke 方法 (Delegate) :在创建控件的基础句 ...
- Invoke 和 BeginInvoke 的区别
在Invoke或者BeginInvoke的使用中无一例外地使用了委托Delegate 一.为什么Control类提供了Invoke和BeginInvoke机制? 关于这个问题的最主要的原因已经是dot ...
- Invoke和BeginInvoke的区别(转载)
转自http://www.cnblogs.com/c2303191/articles/826571.html Control.Invoke 方法 (Delegate) :在拥有此控件的基础窗口句柄的线 ...
- Control.Invoke和Control.BeginInvoke
问题的引入 下面有个简单的demo,大家一看代码就知道效果如何示例.我新建一个winform的程序,然后写入了如下代码: using System; using System.Windows.Form ...
- 千万别在UI线程上调用Control.Invoke和Control.BeginInvoke,因为这些是依然阻塞UI线程的,造成界面的假死
原文地址:https://www.cnblogs.com/wangchuang/archive/2013/02/20/2918858.html .c# Invoke和BeginInvoke 区别 Co ...
- Invoke 和 BeginInvoke 的区别(转发)
在Invoke或者BeginInvoke的使用中无一例外地使用了委托Delegate. 一.为什么Control类提供了Invoke和BeginInvoke机制? 关于这个问题的最主要的原因已经是do ...
随机推荐
- ucore-lab1-练习3report
练习3.分析bootload进入保护模式的过程 0. BIOS通过读取硬盘主引导扇区到内存,并跳转到对应内存中的位置,也就是从’%cs=0 $pc=0x7c00‘进入并执行bootloader,boo ...
- TOJ 4383 n % ( pow( p , 2) ) ===0
传送门:http://acm.tzc.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=4383 描述 There is a ...
- 153. Find Minimum in Rotated Sorted Array (Array; Divide-and-Conquer)
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...
- console报错:No mapping found for HTTP request with URI(xxx)
console报错:No mapping found for HTTP request with URI(xxx) 报错可能原因: 1;contorl未加载成功 2;资源访问失败(所有访问全部被Dis ...
- f5故障排除
1.硬件问题 1)硬盘:查看/var/log/daemon, kern日志,smartctl测试,EUD 2)PSU: 查看LCD报警,/var/log/ltm,EUD等 3)内存:可能导致设备突然重 ...
- Delphi: 模态窗体最小化
源起: 近期所介入的几个项目中,最后视频生成窗体,为一模态对话框.因生成时间可能较长,所以其窗体可以最小化,它最小化时同时最小化主程序,唤醒时主程序再复原. 代码亦是8年前本人所写,一直那样用了,也没 ...
- 交叉编译libudev
一.交叉编译libudev下载udev-182.tar.xz 下载网址:https://mirrors.edge.kernel.org/pub/linux/utils/kernel/hotplug/ ...
- AnguarJS——第10章 路由
第10章 路由 一个应用是由若个视图组合而成的,根据不同的业务逻辑展示给用户不同的视图,路由则是实现这一功能的关键. 10.1 SPA SPA(Single Page Application)指的是通 ...
- Mac下JDK、Maven、Tomcat、Git开发安装及环境变量配置
本文主要内容: - 1.Mac OS 10.11.6 [OS X EL Captain] - 2.Mac OS 安装Java 设置环境变量 - 3.Mac OS 安装Maven设置环境变量 - 4.M ...
- php7下安装event扩展
有效安排I/O,时间和信号的扩展 使用可用于特定平台的最佳I/O通知机制的事件,是PHP基础设施的libevent端口. 下载地址:http://pecl.php.net/package/event ...