任务并行库(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
评论