C# 异步 async await 理解

本文主要对async await 这种基于任务(Task)异步模式进行分析总结。简单理解同步是按顺序执行的但异步不影响主线程的使用异步调用异步线程。

async  异步

返回类型有 Task 、Task<TResult>、void  三种类型。通常包含 await 运算符的一个或多个实例,但缺少 await 表达式也不会导致生成编译器错误。 如果异步方法未使用 await 运算符标记暂停点,那么异步方法会作为同步方法执行,即使有 async 修饰符也不例外,编译器将为此类方法发布一个警告。

await  等待

返回类型有TaskTask<TResult> 和 System.Threading.Tasks.ValueType<TResult> 对象方法。await 只能在async 修饰符标记的封闭方法体lambda 表达式或异步方法Task中出现。

异步方法同步运行,直至到达其第一个 await 表达式,此时await在方法的执行中插入挂起点,会将方法挂起直到所等待的任务完成,然后继续执行await后面的代码区域。

注意:

无法等待具有 void 返回类型的异步方法,并且无效返回方法的调用方捕获不到异步方法抛出的任何异常

异步方法无法声明 in、ref 或 out 参数,但可以调用包含此类参数的方法。 同样,异步方法无法通过引用返回值,但可以调用包含 ref 返回值的方法。

主要参考如下,下面写的挺详细的:

异步编程(async&await) - Jonins - 博客园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值