zoukankan      html  css  js  c++  java
  • 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的效果来体会两者的区别

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

  • 相关阅读:
    Uiviewcontroller 控制器的生命周期
    iOS 按住Home键的代理
    nonatomic,assign,copy,retain的区别
    AFN的二次封装
    下拉列表框
    Android的日期选择器
    基本控件的使用
    Android的简述4
    Android的简述3
    Android的简述2
  • 原文地址:https://www.cnblogs.com/poissonnotes/p/4423677.html
Copyright © 2011-2022 走看看