目次
出力
ホームページ バックエンド開発 C#.Net チュートリアル C# で複数の非同期タスクを実行し、それらがすべて完了するまで待つにはどうすればよいですか?

C# で複数の非同期タスクを実行し、それらがすべて完了するまで待つにはどうすればよいですか?

Aug 27, 2023 am 11:17 AM

如何在 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
ログイン後にコピー

以上がC# で複数の非同期タスクを実行し、それらがすべて完了するまで待つにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

次のレベルのCコンパイラを追加する方法 次のレベルのCコンパイラを追加する方法 Mar 03, 2025 pm 05:44 PM

次のレベルのCコンパイラを追加する方法

C言語のnullの代替案は何ですか C言語のnullの代替案は何ですか Mar 03, 2025 pm 05:37 PM

C言語のnullの代替案は何ですか

C言語コンパイラによるコードをコピーする方法 C言語コンパイラによるコードをコピーする方法 Mar 03, 2025 pm 05:43 PM

C言語コンパイラによるコードをコピーする方法

どの言語コンパイラが優れていますか? どの言語コンパイラが優れていますか? Mar 03, 2025 pm 05:39 PM

どの言語コンパイラが優れていますか?

C言語コンパイラのWebバージョンは何ですか? C言語コンパイラのWebバージョンは何ですか? Mar 03, 2025 pm 05:42 PM

C言語コンパイラのWebバージョンは何ですか?

nullは、C言語での最新のプログラミングではまだ重要ですか? nullは、C言語での最新のプログラミングではまだ重要ですか? Mar 03, 2025 pm 05:35 PM

nullは、C言語での最新のプログラミングではまだ重要ですか?

c言語オンラインプログラミングウェブサイトc言語コンパイラ公式ウェブサイトの要約 c言語オンラインプログラミングウェブサイトc言語コンパイラ公式ウェブサイトの要約 Mar 03, 2025 pm 05:41 PM

c言語オンラインプログラミングウェブサイトc言語コンパイラ公式ウェブサイトの要約

c言語コンパイラインストールチュートリアル(コンピューターバージョン) c言語コンパイラインストールチュートリアル(コンピューターバージョン) Mar 03, 2025 pm 05:41 PM

c言語コンパイラインストールチュートリアル(コンピューターバージョン)

See all articles