Các từ khóa async
và await
sẽ không làm cho ứng dụng của bạn phản ứng nhanh hơn. Chúng chỉ đơn giản làm cho việc gọi và xử lý các phương thức trả về Task
các đối tượng thuận tiện hơn. Để thực hiện async
/ await
thực sự sử dụng các chủ đề nền, bạn sẽ cần kết hợp với việc sử dụng những thứ như:
Task.Start()
- Bắt đầu một nhiệm vụ nhất định bằng cách sử dụng TaskScheduler
.
- PLINQ - Thực hiện song song một loạt các hoạt động, trả về một Nhiệm vụ.
TaskCompletionSource
- Một cách tùy chỉnh để xử lý các tác vụ không đồng bộ. Một nơi tôi đã sử dụng điều này là để xử lý các sự kiện đến từ một WebBrowser
điều khiển.
- Các
async
phương pháp khác , chẳng hạn như nhiều chức năng trong API Win 8.
Nói cách khác, async
/ await
là một phần mở rộng của Mẫu không đồng bộ dựa trên tác vụ . Bạn có thể tìm thấy một lượng lớn thông tin, bao gồm nhiều mẫu ở đây .
Thành BackgroundWorker
phần WinForms tạo 1 luồng nền bằng cách sử dụng mẫu Không đồng bộ dựa trên sự kiện và bạn có thể điền công việc được thực hiện trên luồng nền này bằng mã của riêng bạn trong DoWork
trình xử lý sự kiện. Nói chung, Microsoft không còn khuyến nghị sử dụng mẫu này (xem phần dưới cùng của trang ở đây ), mặc dù nếu bạn đã quen với nó thì đây vẫn có thể là một tùy chọn đơn giản.
Một tùy chọn khác không được đề cập, là phần mở rộng Reactive cho .NET . Đây là một khuôn khổ tuyệt vời khác để thêm khả năng phản hồi cho các ứng dụng của bạn.