这篇文章的目的并不是系统地介绍C#中的await
、async
关键字,而是针对我遇到的一些问题进行记录。
背景
await / async
C#中可以用async
标识方法,表示这个方法是异步的。异步方法的返回值必须是void
、Task
或者Task<T>
。例如:
public static async Task<int> Method(int i)
{
await Task.Delay(1000);
return i;
}
用async
修饰的lambda表达式
我们可以用async
修饰lambda表达式,标识这个表达式为异步。
Func<Task<HttpResponseMessage>> lambda = async () =>
{
using (var httpClient = new HttpClient())
{
var response = await httpClient.GetAsync("https://www.bing.com/");
return response;
}
};
可以看到,用async
修饰以后,返回值也变为Task<HttpResponseMess