2012-10-01 82 views
7

Tôi có nên sử dụng async/await từ bây giờ (C# 5) mọi lúc khi tôi không yêu cầu kết quả của phương thức immediatelly (Task <>) hoặc tôi phải kích hoạt phương thức một lần (void)?Khi nào tôi nên sử dụng async/await và khi nào thì không?

Tôi có nên sử dụng nó trong tất cả các trường hợp khi tôi sử dụng lớp Task trong C# 4 và đẩy công việc vào các chủ đề Backgroud?

Tôi có nên sử dụng nó chỉ trong trường hợp khi tôi sử dụng không đồng bộ .Net Framework Methods?

Bối rối.

Tôi về cơ bản tìm kiếm một lời giải thích đơn giản trong trường hợp tôi nên sử dụng await/async và khi không.

Trả lời

8

async/await có thể được sử dụng khi bạn có hoạt động không đồng bộ. Nhiều thao tác tự nhiên không đồng bộ (như I/O); Tôi khuyên bạn nên async cho tất cả những điều đó. Các hoạt động khác là đồng bộ tự nhiên (như tính toán); Tôi khuyên bạn nên sử dụng các phương pháp đồng bộ cho những phương pháp đó.

Bạn có thể sử dụng Task.Run với async để làm việc nền nếu bạn cần chạy mã đồng bộ một cách không đồng bộ. Tôi giải thích trên blog của tôi tại sao đây là better than BackgroundWorker and asynchronous delegates.

Bạn cũng có thể sử dụng async để thay thế các hình thức xử lý không đồng bộ khác, ví dụ: kiểu IAsyncResult.

Bạn nên sử dụng async trong mọi tình huống mà bạn có hoạt động không đồng bộ.

Các vấn đề liên quan