Xử lý bất đồng bộ trong C# với async
và await
giúp cải thiện hiệu suất của ứng dụng bằng cách tránh chặn luồng chính trong khi chờ đợi các tác vụ dài hạn hoàn thành. Dưới đây là hướng dẫn chi tiết về cách sử dụng async
và await
để thực hiện xử lý bất đồng bộ trong C#.
Bước 1: Hiểu Các Khái Niệm Cơ Bản
async
: Từ khóa này được sử dụng để khai báo một phương thức bất đồng bộ. Khi một phương thức được khai báo làasync
, nó có thể sử dụng từ khóaawait
bên trong.await
: Từ khóa này tạm dừng việc thực thi của phương thứcasync
cho đến khi tác vụ (task) được chờ đợi hoàn thành. Sau khi tác vụ hoàn thành, việc thực thi tiếp tục từ điểm đã dừng.
Bước 2: Cài Đặt Môi Trường Phát Triển
-
Cài đặt .NET Core SDK:
- Tải và cài đặt .NET Core SDK từ trang web chính thức của .NET.
-
Cài đặt Visual Studio hoặc Visual Studio Code:
- Tải và cài đặt Visual Studio từ trang web chính thức của Microsoft.
- Hoặc tải và cài đặt Visual Studio Code từ trang web chính thức của Visual Studio Code.
Bước 3: Tạo Dự Án Mới
-
Tạo dự án mới:
- Mở terminal hoặc Command Prompt.
- Sử dụng lệnh sau để tạo một dự án .NET Core console:
dotnet new console -n AsyncAwaitExample
- Điều hướng vào thư mục dự án:
cd AsyncAwaitExample
Bước 4: Viết Mã Bất Đồng Bộ
-
Viết phương thức bất đồng bộ:
- Mở tệp
Program.cs
và viết phương thức bất đồng bộFetchDataAsync
để mô phỏng việc lấy dữ liệu từ một nguồn bên ngoài (như một dịch vụ web hoặc cơ sở dữ liệu).
using System; using System.Net.Http; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { Console.WriteLine("Fetching data..."); string data = await FetchDataAsync(); Console.WriteLine("Data fetched:"); Console.WriteLine(data); } static async Task<string> FetchDataAsync() { using (HttpClient client = new HttpClient()) { // Giả lập một yêu cầu HTTP GET HttpResponseMessage response = await client.GetAsync("https://jsonplaceholder.typicode.com/posts/1"); response.EnsureSuccessStatusCode(); string responseBody = await response.Content.ReadAsStringAsync(); return responseBody; } } }
- Mở tệp
-
Giải thích mã:
FetchDataAsync
: Phương thức này được khai báo với từ khóaasync
và trả về mộtTask<string>
, nghĩa là nó sẽ thực hiện bất đồng bộ và trả về một chuỗi khi hoàn thành.await client.GetAsync
: Câu lệnh này chờ đợi việc thực hiện yêu cầu HTTP GET hoàn thành mà không chặn luồng chính.await response.Content.ReadAsStringAsync()
: Chờ đợi việc đọc nội dung phản hồi hoàn thành.
Bước 5: Chạy Ứng Dụng
-
Chạy ứng dụng:
- Mở terminal hoặc Command Prompt trong thư mục dự án và sử dụng lệnh sau để chạy ứng dụng:
dotnet run
-
Kết quả:
- Bạn sẽ thấy thông báo "Fetching data..." xuất hiện ngay lập tức, sau đó dữ liệu được lấy từ API sẽ được hiển thị sau khi hoàn thành yêu cầu HTTP.
Tổng Kết
Sử dụng async
và await
trong C# giúp bạn viết mã bất đồng bộ một cách dễ dàng và trực quan. Bằng cách sử dụng các từ khóa này, bạn có thể thực hiện các tác vụ dài hạn như gọi API hoặc truy cập cơ sở dữ liệu mà không chặn luồng chính của ứng dụng. Các bước trên cung cấp một hướng dẫn cơ bản về cách triển khai xử lý bất đồng bộ trong ứng dụng C# của bạn.
Comments