C#
 Computer >> コンピューター >  >> プログラミング >> C#

複数の非同期タスクを実行し、それらすべてがC#で完了するのを待つ方法は?


Task.WaitAll 他のすべてのタスクが実行を完了するまで、現在のスレッドをブロックします。

Task.WhenAll メソッドは、他のすべてのタスクが完了した場合にのみ完了するタスクを作成するために使用されます。最初の例では、Task.WhenAllを使用すると、他のタスクが完了する前にすべてのタスクが完了したことがわかります。これは、Task.WhenAllが実行をブロックしないことを意味します。また、2番目の例では、Task.WaitAllを使用すると、他のすべてのタスクが完了した後にのみ、タスクの完了が実行されることがわかります。これは、Task.WaitAllが実行をブロックすることを意味します。

static void Main(string[] args){
   Task task1 = new Task(() =>{
      for (var i = 0; i < 5; i++){
         Console.WriteLine("Task 1 - iteration {0}", i);
         Task.Delay(1000);
      }
      Console.WriteLine("Task 1 complete");
   });
   Task task2 = new Task(() =>{
      for (var i = 0; i < 5; i++){
         Console.WriteLine("Task 2 - iteration {0}", i);
         Task.Delay(1000);
      }
      Console.WriteLine("Task 2 complete");
   });
   task1.Start();
   task2.Start();
   Console.WriteLine("Waiting for tasks to complete.");
   Task.WhenAll(task1, task2);
   Console.WriteLine("Both Tasks Completed.");
   Console.ReadLine();
}

出力

Waiting for tasks to complete.
Both Tasks Completed.
Task 1 - iteration 0
Task 2 - iteration 0
Task 2 - iteration 1
Task 2 - iteration 2
Task 2 - iteration 3
Task 1 - iteration 1
Task 1 - iteration 2
Task 1 - iteration 3
Task 1 - iteration 4
Task 1 complete
Task 2 - iteration 4
Task 2 complete

static void Main(string[] args){
   Task task1 = new Task(() =>{
      for (var i = 0; i < 5; i++){
         Console.WriteLine("Task 1 - iteration {0}", i);
         Task.Delay(1000);
      }
      Console.WriteLine("Task 1 complete");
   });
   Task task2 = new Task(() =>{
      for (var i = 0; i < 5; i++){
         Console.WriteLine("Task 2 - iteration {0}", i);
         Task.Delay(1000);
      }
      Console.WriteLine("Task 2 complete");
   });
   task1.Start();
   task2.Start();
   Console.WriteLine("Waiting for tasks to complete.");
   Task.WaitAll(task1, task2);
   Console.WriteLine("Both Tasks Completed.");
   Console.ReadLine();
}

出力

Waiting for tasks to complete.
Task 1 - iteration 0
Task 2 - iteration 0
Task 1 - iteration 1
Task 1 - iteration 2
Task 1 - iteration 3
Task 1 - iteration 4
Task 1 complete
Task 2 - iteration 1
Task 2 - iteration 2
Task 2 - iteration 3
Task 2 - iteration 4
Task 2 complete
Both Tasks Completed

  1. Gmail でタスクを作成して操作する方法

    タスクやリマインダーを作成および管理するために、多くの場合、サードパーティ製のツールが使用されていました。それを行うことができるすべてのApp Storeで利用可能な何百ものWebおよびモバイルアプリケーションがあります.そして、仕事を正しく行うという点で、それぞれが他よりも優れています。 ただし、メール クライアントに関して言えば、タスクの作成と管理に関しては Gmail が最適です。同時に、Outlook 上のものや Mac 上の Apple Mail 統合など、他の同様のタスク アプリケーションがあります。しかし、Gmail はウェブベースのプラットフォームであり、両者を圧倒しました。

  2. Windows でタスクを自動化する方法

    多くの人にとって、ラップトップまたはデスクトップ PC は不可欠なツールです。仕事を片付けたり、家族や友人と連絡を取り合ったり、長い一日の終わりに電源を切ったりする場合でも、Windows を実行しているデバイスはすべてを実行できます。 すべてをスムーズに実行できるようにするために、Windows では、更新プログラムのチェックや一時ファイルの削除など、多くのメンテナンス タスクがバックグラウンドで自動化されています。これらは、独自のスクリプトでカスタマイズできるツールであるタスク スケジューラに依存しています。 基本的には、これを使用して、特定の基準が満たされたときに特定のアプリを開