.NET Framework 4.5 中的异步特性增强

  • Jenni Konrad
  • 曹如进

2012 年 4 月 12 日

话题:DevOps语言 & 开发架构

有机会试过 Visual Studio 11 或者Visual Studio Async CTP的开发人员想必对 Visual Basic 和 C# 中新的 Await 和 Async 关键字一定不陌生。最近,微软披露了.NET Framework 4.5 中一些新的变化细节,用于一步扩展异步编程的能力。

.NET 4.5 中编写异步代码已经可以信手拈来,它不再需要借助非常复杂的方法或回调。新的 async 任务结构在开发人员看来会非常熟悉,例如下面的例子展示了一个同步方法声明以及它对应的异步声明:

'synchronous method
Private Function GetInfo(url As String) As Byte()

'asynchronous method
Private Async Function GetInfo(url As String) As Task(Of Byte())

异步方法返回的结果是一个任务;当 Await 调用作用于该任务时,方法会立刻暂停,并等到任务完成后恢复运行。虽然看起来结构很简单,但在实现异步代码时还得关注大量注意事项以避免降低性能。

除了 C# 和 Visual Basic 语言的改动之外,.NET Framework 4.5 开发者预览版还增加了一批常用操作的异步方法。System.IO 目前包含了如 ReadAsync、WriteAsync、CopyToAsync 和其他一些方法。System.Data.Common 和 System.Data.SqlClient 中许多方法也有了相应的异步版本,如 ExecuteQueryAsync、ExecuteScalarAsync 和 ReadAsync。

ASP.NET 4.5 允许开发人员异步使用 HttpRequest.GetBufferlessInputStream,并引入 HttpTaskAsyncHandler 简化异步处理程序编写和任务使用。Windows Communication Foundation(WCF)和 Windows Presentation Foundation(WPF)也包含了新的异步特性。

想要开始学习.NET Framework 4.5 Beta 中的新的异步特性,可以访问Visual Studio 异步编程站点。另外,该框架一方面作为 Visual Studio 11 的一部分发布,另一方面还可以通过 Async CTP for Visual Studio 2010 访问到它。

查看英文原文:New Asynchronous Features Enhance .NET Framework 4.5

DevOps语言 & 开发架构