C# cung cấp các từ khóa async
và await
để làm việc với các thao tác bất đồng bộ một cách dễ dàng và hiệu quả. Các từ khóa này giúp bạn viết mã bất đồng bộ trông giống mã đồng bộ, giúp dễ đọc và bảo trì hơn. Dưới đây là hướng dẫn cách sử dụng async
và await
để xử lý bất đồng bộ trong C#.
1. Từ Khóa async
async
được sử dụng để khai báo rằng một phương thức, lambda, hoặc biểu thức ẩn danh là bất đồng bộ.- Phương thức có từ khóa
async
thường trả vềTask
hoặcTask<T>
(hoặcvoid
đối với các sự kiện).
2. Từ Khóa await
await
được sử dụng để chờ đợi một tác vụ bất đồng bộ hoàn thành.await
có thể chỉ được sử dụng trong một phương thức, lambda, hoặc biểu thức ẩn danh đã được đánh dấu bằng từ khóaasync
.
Ví Dụ: Đọc Nội Dung từ Một URL
Bước 1: Thêm Tham Chiếu Đến System.Net.Http
Đầu tiên, bạn cần thêm tham chiếu đến thư viện System.Net.Http
nếu chưa có trong dự án của bạn.
Bước 2: Tạo Phương Thức Bất Đồng Bộ
Dưới đây là ví dụ về cách sử dụng async
và await
để thực hiện một yêu cầu HTTP bất đồng bộ và đọc nội dung từ một URL.
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
string url = "https://www.example.com";
string content = await FetchContentAsync(url);
Console.WriteLine(content);
}
public static async Task<string> FetchContentAsync(string url)
{
using (HttpClient client = new HttpClient())
{
// 'await' sẽ tạm dừng phương thức FetchContentAsync cho đến khi tác vụ hoàn thành.
HttpResponseMessage response = await client.GetAsync(url);
// Đảm bảo rằng yêu cầu đã thành công.
response.EnsureSuccessStatusCode();
// 'await' sẽ tạm dừng phương thức FetchContentAsync cho đến khi tác vụ đọc nội dung hoàn thành.
string responseBody = await response.Content.ReadAsStringAsync();
return responseBody;
}
}
}
Giải Thích
- Phương Thức Bất Đồng Bộ: Phương thức
FetchContentAsync
được khai báo với từ khóaasync
và trả về mộtTask<string>
. Bên trong phương thức này,await
được sử dụng để chờ đợi các tác vụ bất đồng bộGetAsync
vàReadAsStringAsync
hoàn thành. - Sử Dụng
await
: Khiawait
được sử dụng, phương thức sẽ tạm dừng tại đó cho đến khi tác vụ hoàn thành, sau đó tiếp tục thực hiện với kết quả của tác vụ.
Lợi Ích của Bất Đồng Bộ
- Hiệu Năng: Phương thức bất đồng bộ giúp tránh chặn luồng chính, cho phép ứng dụng của bạn xử lý nhiều tác vụ đồng thời mà không bị treo.
- Khả Năng Mở Rộng: Các thao tác IO-bound, như truy vấn cơ sở dữ liệu hoặc thực hiện yêu cầu HTTP, có thể tận dụng bất đồng bộ để cải thiện khả năng mở rộng và đáp ứng của ứng dụng.
Tổng Kết
async
: Được sử dụng để khai báo một phương thức bất đồng bộ.await
: Được sử dụng để tạm dừng thực thi phương thức bất đồng bộ cho đến khi tác vụ hoàn thành.- Ứng dụng thực tiễn: Giúp xử lý các thao tác IO-bound một cách hiệu quả hơn, cải thiện hiệu năng và khả năng mở rộng của ứng dụng.
Sử dụng async
và await
đúng cách sẽ giúp bạn viết mã bất đồng bộ một cách dễ dàng, nâng cao hiệu suất và trải nghiệm người dùng của ứng dụng.
Comments