Bài tập C#

Chạy nhiều tác vụ đồng thời với Task.WhenAll trong C#

Trong bài học này, bạn sẽ chạy đồng thời hai tác vụ bất đồng bộ độc lập và chờ cả hai hoàn thành bằng Task.WhenAll.

Giới thiệu

Khi có nhiều tác vụ bất đồng bộ không phụ thuộc vào nhau, ví dụ gọi hai API khác nhau, bạn không cần chờ từng tác vụ xong rồi mới chạy tác vụ tiếp theo. Task.WhenAll cho phép chạy chúng cùng lúc và chỉ hoàn thành khi tất cả đều đã xong.

Cả hai lời gọi Fetch(20) và Fetch(22) được bắt đầu ngay lập tức, nên thời gian chờ của chúng diễn ra song song thay vì nối tiếp nhau. Task.WhenAll trả về một mảng chứa kết quả theo đúng thứ tự các tác vụ, và tổng của chúng là 42.

Ví dụ C# chạy được

C#
Chạy code →
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]);
    }
}
Kết quả khi chạy
42

Luyện tập với trình gỡ lỗi

Đặt breakpoint ở một phép gán hoặc điều kiện quan trọng, bấm Debug và xem giá trị các biến cục bộ (local variable) trước khi bước sang dòng tiếp theo.

Luyện tập với thử thách

Áp dụng kiến thức của bài học này để giải một bài toán thực tế. Mỗi thử thách chạy ngay trên trình duyệt, có kiểm thử tức thì và AI nhận xét.

Tất cả thử thách