C# 演習

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 のレビューも受けられます。

すべてのチャレンジ