• BeginInvoke与Invoke的区别


    简单的讲就是

    1. BeginInvoke不需要等待方法运行完毕,就会继续执行下面的代码
    2. Invoke则必须等待Invoke中的代码运行完毕,才会继续执行下面的代码。

    可以通过下面的项目测试上面所描述的观点。

    在代码中的一段代码如下:

     1         /// <summary>
     2         /// Sub thread function
     3         /// </summary>
     4         private void ThreadFun()
     5         {
     6             MethodInvoker mi = new MethodInvoker(ShowProcessBar);
     7             
     8             this.BeginInvoke(mi);
     9             //this.Invoke(mi);
    10 
    11             MessageBox.Show("可以根据弹出的警告框先后次序判断BeginInvoke与Invoke的区别");
    12 
    13             Thread.Sleep(1000);//Sleep a while to show window
    14 
    15             bool blnIncreased = false;
    16             object objReturn = null;
    17             do
    18             {
    19                 Thread.Sleep(50);
    20                 objReturn = this.Invoke(this.myIncrease,
    21                     new object[] { 1 });
    22                 blnIncreased = (bool)objReturn;
    23             }
    24             while (blnIncreased);
    25         }

    通过切换注释

    BeginInvoke与Invoke的效果来体会两者的区别

    项目下载地址:【点这里】

  • 相关阅读:
    HTML介绍
    python D41 前端初识
    mysql索引原理与查询优化
    python D41
    python D40 pymsql和navicat
    python D40 以及多表查询
    python D35 selectors模块
    python D35 I/O阻塞模型
    测试过程
    测试基础
  • 原文地址:https://www.cnblogs.com/poissonnotes/p/4423677.html
Copyright © 2020-2023  润新知