简单的讲就是
- BeginInvoke不需要等待方法运行完毕,就会继续执行下面的代码
- Invoke则必须等待Invoke中的代码运行完毕,才会继续执行下面的代码。
可以通过下面的项目测试上面所描述的观点。
在代码中的一段代码如下:
/// <summary>
/// Sub thread function
/// </summary>
private void ThreadFun()
{
MethodInvoker mi = new MethodInvoker(ShowProcessBar); this.BeginInvoke(mi);
//this.Invoke(mi); MessageBox.Show("可以根据弹出的警告框先后次序判断BeginInvoke与Invoke的区别"); Thread.Sleep();//Sleep a while to show window bool blnIncreased = false;
object objReturn = null;
do
{
Thread.Sleep();
objReturn = this.Invoke(this.myIncrease,
new object[] { });
blnIncreased = (bool)objReturn;
}
while (blnIncreased);
}
通过切换注释
BeginInvoke与Invoke的效果来体会两者的区别
项目下载地址:【点这里】