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
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]);
}
}
42Luyện tập với trình gỡ lỗi
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