asnyc和await是什么?
异步编程是一种编程范式,C#中的异步编程可以通过Thread,TheadPool,Task,async/await等来实现。
await能等待什么?
不能等待同步代码,只能等待Task或异步方法,且异步方法必须有返回值,
async/await的出现:
C#5(.NET4.5)引入的语法糖
C#7.1,Main入口也可以
C#8.0,可以使用异步流await,foreach可以释放对象await using
asnyc:
async
是一个修饰符,用于声明一个方法、lambda表达式或者匿名方法为异步的。
异步方法通常用于执行可能需要很长时间的操作,比如I/O操作(文件读写、网络请求等),而不会阻塞当前线程。
使用 async
修饰的方法必须有返回值,可以是 Task
, Task<T>
或者 void
(在C# 7.3及以后版本中,void
异步方法是不推荐的,因为它不能使用 await
)。
await:
await
是一个操作符,用于等待一个异步操作完成,而不会阻塞当前线程。
await
只能在标记为 async
的方法内部使用。
当执行到 await
表达式时,控制权会返回给调用者,直到被 await
的任务完成。当任务完成后,执行会从