c#Invoke和BeginInvoke的区别
来源:互联网 发布:vb.net 多行注释 编辑:程序博客网 时间:2024/06/06 03:07
//这是一个button的点击函数 private void bt_Click(object sender, EventArgs e) { /* Invoke :在拥有此控件的基础窗口句柄的线程上执行指定的委托。 BeginInvoke :在创建控件的基础句柄所在线程上异步执行指定委托。 以异步方式调用的委托,此方法会立即返回。 以上摘自 MSDN 网上资料不少 自己总结一下 它们都是为了跨线程安全的访问ui控件 区别如下: */ //执行结果 button上显示我是按钮 this.Invoke(new Action(() => { Thread.Sleep(100); bt.Text = "bt"; })); bt.Text = "我是按钮"; //执行结果 button上显示bt this.BeginInvoke(new Action(() => { Thread.Sleep(100); bt.Text = "bt"; })); bt.Text = "我是按钮"; }
将以上代码分别执行结果(new action 是泛型委托 无返回值)
第一个调用Invoke 结果为 则其执行顺序为 休眠----------显示bt----------显示我是按钮
第二个调用begininvoke结果为 则其执行顺序为 显示我是按钮----------休眠----------显示bt
由此可知 begininvoke 不管执行完没有都会先向下执行 相当于新开了一个线程 也就是MSDN上说的异步方式调用委托,此方法会立即返回
而invoke不会 说明其是执行完才返回的 才能继续向下执行
//这个的先后顺序是 显示我是按钮 显示bt 休眠 最后结果为bt this.BeginInvoke(new Action(() => { bt.Text = "bt"; Thread.Sleep(100); })); bt.Text = "我是按钮";这个异步方式会执行的稍微慢一点 程序会先向下执行
阅读全文
0 0
- c#Invoke和BeginInvoke的区别
- Invoke 和 BeginInvoke 的区别
- Invoke 和 BeginInvoke 的区别
- Invoke 和 BeginInvoke 的区别
- Invoke和BeginInvoke的区别
- Invoke和BeginInvoke 区别
- Invoke() 和BeginInvoke()区别
- invoke和begininvoke 区别
- 【C#】Invoke和BeginInvoke
- Invoke()/BeginInvoke()的区别
- C# Invoke 和 BeginInvoke 的的区别
- Control的Invoke和BeginInvoke 区别
- C#中Invoke 和 BeginInvoke 的区别
- this.Invoke和this.BeginInvoke的区别
- C#中Invoke 和 BeginInvoke 的区别
- C#中Invoke 和 BeginInvoke 的区别
- C#中Invoke 和 BeginInvoke 的区别
- C#中Invoke 和 BeginInvoke 的区别
- UVa 11809 Floating-Point Numbers
- 左旋转字符串
- struts2获取ServletAPI
- python实践小程序
- 根据先序序列与中序序列构建二叉树
- c#Invoke和BeginInvoke的区别
- 漏洞银行/逆向工程学习日记(4)-跳转指令&指令跳转原理
- hdu 6180
- opengl相关学习资料
- Python dataframe.pivot()
- kali2.0的ssh
- Oracle 内存里的 SGA是如何构成的呢又起到什么作用
- 发送post请求到https的url
- angularJS-打开新的标签页