Bạn đang xem: Async await c# là gì

Facebook Twitter Linkedin

Xem thêm: Văn Bản Quy Phạm Pháp Luật Là Gì, Văn Bản Quy Phạm Pháp Luật

Trang chủ Giới thiệu Đào tạo Học lập trình .NET Java PHP Lập trình di động Công nghệ Database Kiểm thử phần mềm Khóa học cơ sở Hoạt động đào tạo Lịch khai giảng Tin tức đào tạo Lớp đang học Project học viên Chính sách dành cho học viên Chương trình ưu đãi Tin tuyển dụng, việc làm Đăng ký khóa học Môi trường đào tạo Hình ảnh lớp học Học viên nói về chúng tôi Hồ sơ giảng viên Kiến thức lập trình Bí kíp lập trình Tin tức Tutoirals Diễn đàn Dịch vụ Hỏi đáp Liên hệ

Xem thêm: Auxiliary Là Gì – Trợ động Từ

Async và await trong C# 5.0 +

So với các phương pháp lập trình truyền thông, lập trình bất đồng bộ ra đời nhằm để hạn chế nghẽn cổ chai (thuật ngữ bottlenecks) và nâng cao tính phản hồi của toàn ứng dụng.

Khái niệm bất đồng bộ hoàn toàn không mới, và được áp dụng rất triệt để trên các hệ thống đa nhiệm, hay đơn giản như hệ thống GUI bất kỳ đều áp dụng phương pháp lập trình bất đồng bộ. Async và await là công cụ cực kỳ hiệu quả để giải quyết các vấn đề xử lý bất đồng bộ, có thể nói async và await là một trong những điểm nhấn của .NET 4.5 và Visual Studio 2015. Hãy cùng xem async và await có gì thú vị nhé.

.NET Framework đưa ra hai từ khóa async và await, đều rất mới mẻ, được giới thiệu bắt đầu từ phiên bản Visual Studio 2012 (Và từ WP 7.5 SDK), nhằm hỗ trợ việc giải quyết vấn đề xử lý bất đồng bộ. Cặp từ khóa này hỗ trợ chúng ta lập trình dễ dàng hơn – đồng thời tiết kiệm công sức để viết, debug và bảo trì.

Async tăng tính phản hồi cho ứng dụng

Kỹ thuật lập trình bất đồng bộ cần thiết cho các phương thức trong đó có blocking (tức là phải chờ để hoàn tất), ví dụ: Khi ứng dụng có truy cập đến các trang web, khi ứng dụng cần đọc multimedia từ bộ nhớ, … Trong một số trường hợp cụ thể, việc này bị chậm hoặc bị delayed. Nếu các phương thức trên bị block với một process đồng bộ, toàn bộ ứng dụng đều phải dừng lại và đợi. Trong một ứng dụng bất đồng bộ, ứng dụng vẫn có thể tiếp tục chạy bình thường với các tác vụ khác mà không phụ thuộc vào việc dữ liệu web đã được lấy về xong hay chưa. Từ đó dẫn đến việc tăng tính phản hồi cho ứng dụng.

Sử dụng async, await khác biệt như thế nào

Trước tiên, chúng ta sẽ cùng nhau tìm hiểu một ví dụ: Trong ví dụ này, chúng ta sẽ đi lấy nội dung của file myFile.txt đặt trên web tại đường dẫn http://www.myurl.com/myFile.txt

+ Cách 1: Lập trình đồng bộ

var client = new WebClient();

// Download data.

var textData = client.DownloadString(“http://www.myurl.com/myFile.txt”);

// Write values.

Debug.WriteLine(textData);                                                                                                              

Việc lập trình đồng bộ thông thường, dòng Debug.WriteLine(textData) sẽ được thực hiện ngay khi dòng phương thức client.DownloadString hoàn tất. Tuy nhiên, ở process gọi đoạn code trên sẽ phải dừng lại chờ cho tới khi xử lý xong.

+ Cách 2: Không sử dụng async, await:

void GetWebData()

public void loadHTMLCallback(Object sender, DownloadStringCompletedEventArgs e) var textData = (string)e.Result; // Do cool stuff with result Debug.WriteLine(textData); }

 Với xử lý bất đồng bộ không dùng async await, định nghĩa event handler để bắt sự kiện khi tải xong nội dung của file. Sau đó gọi hàm bất đồng bộ để lấy nội dung.

+ Cách 3: Sử dụng async, await

var client = new WebClient()

// Download data.

var textData = await client.DownloadString(“http://www.myurl.com/myFile.txt”);

// Write values.

Debug.WriteLine(textData);     

Điểm khác biệt

*

Thứ nhất, việc xử lý bất đồng bộ 2 thao tác lấy dữ liệu và hiển thị đều được thực hiện trên 1 thread duy nhất. Đây là điểm khác biệt giữa lập trình đồng bộ và lập trình bất đồng bộ.

Việc thêm từ khóa await sẽ tách biệt đoạn code phía sau dòng lệnh có chứa await ra để thực thi ở 1 thread khác khi dòng lệnh đó hoàn tất.

Thứ hai, với việc xử lý bất đồng bộ sử dụng từ khóa async await, chúng ta không cần định nghĩa event handler để bắt sự kiện hoàn tất tác vụ bất đồng bộ. Điều này đồng nghĩa với việc viết code gọn, dễ dàng debug, bảo trì hơn.

Theo dõi http://thienmaonline.vn để tiếp tục theo dõi các loạt bài mới nhất về C# nhé! Tags:

Chuyên mục: Hỏi Đáp