www.1862.net > C#中invokE和BEgininvokE的区别

C#中invokE和BEgininvokE的区别

Invoke,需要等待委托的方法执行返回后才执行下面的代码 begininvoke不需要

区别在于Invoke是同步,BeginInvoke是异步。 打个比方(伪代码),后台线程中需要通知UI界面进行刷新 new Thread(){ /* 比如读取数据库的方法,比较耗时; var data = GetData(); 读取完成后通知UI线程, this.Invoke(data); //如果GetData方法是...

这两个方法最常用的场合是:多线程环境下更新控件。 例如,在WinForm程序中有一个后线程不断生成新的数字,而程序需要将这个数字在label1控件上显示,这是就需要调用Label控件的nvoke或者BeginInvok方法。 using System;using System.Drawing;us...

C#中Invoke 和 BeginInvoke 的区别 Invoke,需要等待委托的方法执行返回后才执行下面的代码begininvoke不需要

Invoke后,在主线程上执行,线程将等待返回结果,最后造成的结果就是时间过长,主界面或主线程假死。 BeginInvoke后,主线程将创建一个后台线程去执行,完了后,主线程继续往后执行,不会等待返回结果。用户需要得到返回结果的话,就必须调用End...

1)相同点:Invoke与BeginInvoke方法都是.NET底层内置嵌入到delegate对象里的。 2)不同点:Invoke是显式调用委托链的方法,是一种间接形式,相对应的是直接调用的形式。直接调用形式经过C#编译后最终生成的IL仍然是采用间接形式,即delegateObj.Invo...

在Invoke或者BeginInvoke的使用中无一例外地使用了委托Delegate。 一、为什么Control类提供了Invoke和BeginInvoke机制? 关于这个问题的最主要的原因已经是dotnet程序员众所周知的,我在此费点笔墨再次记录到自己的日志,以便日后提醒一下自己。...

查看MSDN如下: Control..::.Invoke ---> 在拥有此控件的基础窗口句柄的线程上执行委托。 Control..::.BeginInvoke ---> 在创建控件的基础句柄所在线程上异步执行委托。 显然,Invoke() 与 BeginInvoke() 方法间的主要区别在于“异步”关键字眼。 ...

多线程,我们经常要在工作线程中去更新界面显示,而在多线程中直接调用界面控件的方法是错误的做法,Invoke 和 BeginInvoke 就是为了解决这个问题而出现的,使你在多线程中安全的更新界面显示。 正确的做法是将工作线程中涉及更新界面的代码封装...

1 /// 2 /// 直接调用Invoke 3 /// 4 private void TestInvoke() 5 { 6 listBox1.Items.Add("--begin--"); 7 listBox1.Invoke(new Action(() => 8 { 9 listBox1.Items.Add("Invoke"); 10 })); 11 12 Thread.Sleep(1000); 13 listBox1.Items.Add(...

网站地图

All rights reserved Powered by www.1862.net

copyright ©right 2010-2021。
www.1862.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com