BeginInvokeとInvokeの違い

3936 ワード

簡単に言えば
  • BeginInvokeはメソッドの実行を待つ必要がなく、次のコード
  • を実行し続けます.
  • 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の効果は両者の違いを体得する
     
    プロジェクトダウンロードアドレス:【ここを注文】