×

Xử lý bất đồng bộ trong C# với async và await Hướng dẫn cơ bản và cài đặt

Xử lý bất đồng bộ trong C# với asyncawait 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 asyncawait để 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óa await bên trong.
  • await: Từ khóa này tạm dừng việc thực thi của phương thức async 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

  1. Cài đặt .NET Core SDK:

  2. Cài đặt Visual Studio hoặc Visual Studio Code:

Bước 3: Tạo Dự Án Mới

  1. 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ộ

  1. 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;
            }
        }
    }
    
  2. Giải thích mã:

    • FetchDataAsync: Phương thức này được khai báo với từ khóa async và trả về một Task<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

  1. 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
    
  2. 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 asyncawait 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