关于 Async Task 的一些资源

  • Roopesh Shenoy
  • 曹如进

2012 年 6 月 11 日

话题:语言 & 开发

任务并行库(Task Parallel Library)中的 Async Task 是编写异步代码的一大利器。我们收集了一些资源展示如何在各种场景下使用该 API 以及在使用 API 时各方面的注意事项。

在 Async API 中启用进度和取消》一文中,Brandon Bay 展示了如何在异步上传文件的同时,创建一个不断更新的进度条,并使用取消令牌(cancellation token)取消一个异步任务。在早期的一篇文章中,Brandon 还展示了使用以前的方法(通过 EAP 和 APM)与使用 async 与 await 关键字的新方法在编写异步代码方面的不同之处。这篇关于Async/Await 的常见问题解答包含了更多细节并指向了更多资源。

虽然这些新关键字让异步编程变得更加简单,但是开发人员应当避免过度使用,因为Async 调用代价可能很高昂。另外,最好只进行少量大型的异步调用,而不要采用很多小型的异步调用。

使用 Async 不仅仅局限于 Windows 编程,它还可以用于 ASP.NET 服务端代码中。ASP.NET MVC 4 中推出的Async 异步控制器的任务支持让控制器中编写非阻塞代码变得更加简单,而控制器本身也可以进一步使用异步方法。当超时发生时,你甚至可以设置超时并引发异常。要注意的是,该功能仅在使用 C# 5 时支持。

值得注意的是,async 与 await 关键字如此方便以至于node.js 的一个分支已经实验将该语法作为 javascript 传统回调的替代方案。

查看英文原文:Resources On Async Tasks

语言 & 开发