Lập trình bất đồng bộ trong C# là cách tiếp cận hiệu quả cho các hoạt động bị chặn hoặc truy cập bị trì hoãn. Nếu một hoạt động bị chặn như vậy trong quy trình đồng bộ (synchronous), thì toàn bộ ứng dụng phải chờ đợi và tốn nhiều thời gian hơn. Ứng dụng ngừng phản hồi. Sử dụng cách tiếp cận bất đồng bộ, ứng dụng tiếp tục thực hiện các tác vụ khác.
Từ khóa async và await trong C# được dùng trong lập trình bất đồng bộ. Sử dụng chúng, bạn có thể làm việc với tài nguyên .NET Framework, .NET Core, v.v. Các phương thức bất đồng bộ được định nghĩa bằng từ khóa async gọi là async methods.
Một ứng dụng có GUI, kiểm tra nội dung hàng đợi (queue) và nếu có tác vụ chưa xử lý, nó lấy ra và xử lý trước. Mã thực thi đồng bộ và tác vụ chưa xử lý được hoàn thành trước. Ứng dụng sẽ hiển thị "stop responding" (ngừng phản hồi) nếu xử lý mất nhiều thời gian hơn dự kiến.
Hãy xem vấn đề nêu trên:
private void OnRequestDownload(object sender, RoutedEventArgs e)
{
var req = HttpWebRequest.Create(_requestedUri);
var res = req.GetResponse();
}
Để giải quyết vấn đề trên, sử dụng từ khóa async và await:
private async void OnRequestDownload(object sender, RoutedEventArgs e)
{
var req = HttpWebRequest.Create(_requestedUri);
var res = await req.GetResponseAsync();
}