Async/Await是C# 5引入的关键字,旨在提高用户界面响应能力和对Web资源的访问能力,同时它使异步代码的编写变得更加容易。在C#中,异步编程可以使代码更加简洁、高效和易于维护。异步编程的一个重要挑战是处理异步操作完成后的结果,以避免阻塞主线程并保持用户界面的响应性。
microsoft 的一篇文档 Task asynchronous programming model,它描述了在异步编程中控制流是如何在方法之间移动的。
执行步骤
写个例子
C#internal class Program
{
static async Task Main(string[] args)
{
var len = await DownloadHtmlAsync("http://www.baidu.com", "baidu.txt");
Console.WriteLine(len);
}
static async Task<int> DownloadHtmlAsync(string url, string filename)
{
using (HttpClient client = new HttpClient())
{
string html = await client.GetStringAsync(url);
await File.WriteAllTextAsync("./" + filename, html);
return html.Length;
}
}
}
我们用ILSpy反编译一下DLL文件
将.net版本选到4.0版本
await,async 是语法糖,最终编译成状态机调用
async/await本质上是通过编译器实现的语法糖,它让我们能够轻松的写出简洁、易懂、易维护的异步代码。
本文作者:技术老小子
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!