C#のTask.WhenAllで複数の処理を同時に実行する
このレッスンでは、互いに関係のない2つの非同期処理を同時に実行し、Task.WhenAllで両方の完了を待ちます。
はじめに
2つの異なるAPIを呼ぶ場合のように、互いに依存しない非同期処理が複数あるとき、1つずつ終わるのを待ってから次を始める必要はありません。Task.WhenAllを使えばそれらを同時に実行でき、すべてが終わったときに完了します。
2つの呼び出しFetch(20)とFetch(22)はすぐに開始されるので、待ち時間は順番にではなく並行して進みます。Task.WhenAllは、処理の順番どおりに結果を並べた配列を返し、その合計は42です。
実行できる C# の例
C#
Program.cs
using System;
using System.Threading.Tasks;
class Program
{
static async Task<int> Fetch(int value) { await Task.Delay(20); return value; }
static async Task Main()
{
int[] results = await Task.WhenAll(Fetch(20), Fetch(22));
Console.WriteLine(results[0] + results[1]);
}
}
42デバッガーで練習する
大事な代入や条件にブレークポイントを置いて Debug を押し、次の行に進む前にローカル変数の値を確かめましょう。
チャレンジで練習する
このレッスンの内容を使って実際の問題を解きましょう。各チャレンジはブラウザで動き、すぐにテストされ、AI のレビューも受けられます。
すべてのチャレンジ