在 C# 中,await
关键字用于异步编程,配合 async
方法一起使用。await
允许你等待异步操作完成,而不会阻塞当前线程。简而言之,await
会暂停当前方法的执行,直到任务完成,然后继续执行。
1. await与async的关系
async
:async关键字是一个函数修饰符,用于表示这个方法是一个异步方法,但并不绝对。
Async方法在执行的时候,开始是以同步的方式执行(即在调用方的thread里跑的),直到遇到await关键字,从await关键字开始,C#会另起一个thread来执行await后面的代码。
C#新起的这个thread,会等待await的方法执行,在执行结束前,一直处于阻塞状态。
而调用方的thread(一般是主线程)会继续运行,可以处理UI等操作。
如果Async方法里面的代码没有包含await的代码会怎么样?
那整个函数就会同步执行,跟普通函数没差别。编译器只会给你个警告。
当一个方法被标记为async时,它返回一个Task对象,而不是直接返回结果。
举例:
private async Task<bool> Fun1()
{
int num = 2;
await FunSub(