async和await关键字的作用
作者:Aliot
发布时间:2020-08-03 05:52:10
评论:0
阅读:20
async和await关键字的作用仅有一个:使用同步的编程方式调用异步代码,并为异步任务的返回值提供了方便的调用方式
class A
{
public Task<int> GetIntAsync()
{
return Task<int>.Factory.StartNew(()=> {
Thread.Sleep(10000);//模拟任务执行了10s
return 10;
});
}
public async void Echo()
{
//Thread.Sleep(10000);这里的代码会阻塞调用方
//await 运算符暂停对其所属的 async 方法Echo的求值,直到其操作数GetIntAsync()表示的异步操作完成
int i = await GetIntAsync();
Console.WriteLine(i);
}
}
class Program
{
static void Main(string[] args)
{
A a = new A();
//方式1:调用async关键字修饰的异步方法,当程序执行到异步方法Echo里面的await时,
//程序会会立即返回到Echo的调用方(Main函数)并继续执行下一行代码,Echo里面await的任务不会停止
//a.Echo();
//方式2:阻塞地等待异步任务的结果,等价于同步代码
//var t = a.GetIntAsync();//这里开新线程后立即返回
//Console.WriteLine(t.Result);//使用Task的Result会导致当前线程阻塞
//方式3:如果主流程不依赖于异步方法的返回结果,那么async和await是不需要的,
//工作直接等价于开线程执行一个不需要返回值的任务
//a.GetIntAsync();
Console.WriteLine("complete");
Console.Read();
}
}