C# 中出现的 async 和 await
时间: 2024-09-18 10:11:14 浏览: 40
浅谈C#中的Async和Await的用法详解
在C#中,`async`和`await`是用于编写异步代码的关键特性,它们一起实现了所谓的“异步编程模型”,使得处理耗时操作(如网络请求、文件读写)时不会阻塞主线程,从而提高程序的响应性和用户体验。
**async**关键字用于声明一个方法为异步方法,这意味着这个方法可以返回一个可以在稍后完成的Promise或Task。这允许你在方法内部使用`await`关键字暂停执行,直到等待的操作完成。
**await**关键字用于暂停当前方法的执行,直到调用的异步方法完成并返回结果。当你在`await`后面跟随一个异步操作,比如`Task`或`Task<T>`,编译器会自动插入适当的回调逻辑,以便在操作完成后恢复方法的执行。
以下是一个简单的示例:
```csharp
public async Task DownloadFileAsync(string url)
{
using (var client = new HttpClient())
{
var response = await client.GetAsync(url);
if (response.IsSuccessStatusCode)
{
var content = await response.Content.ReadAsStreamAsync();
// 操作文件流...
}
}
}
```
在这个例子中,`DownloadFileAsync`方法通过`HttpClient`发起一个GET请求,然后使用`await`等待获取到HTTP响应。如果响应成功,再进一步读取响应体,整个过程都不会阻塞UI线程。
阅读全文