解密async await 原理(.net)

本文详细探讨了.NET中async和await的实现原理,从一段简单的代码入手,介绍了它们如何通过编译器生成状态机,并利用dotPeek工具进行反编译分析。文章解释了SetName方法上的状态机特性、AsyncVoidMethodBuilder的作用,以及await执行流程,最后总结了async方法在执行时如何处理任务完成和回调机制。
摘要由CSDN通过智能技术生成

我们经常用async和await实现异步方法,那么他的实现原理是什么呢,今天介绍一下。

一.代码

1:介绍原理之前,先看一段简单的代码:
在这里插入图片描述
2:代码执行结果,如下所示,想必结果和大家的预期是一样的:
在这里插入图片描述

二.工具

研究async await使用的工具是dotPeek,注意:要勾选 show compiler-generated code。下载地址:https://www.jetbrains.com/decompiler/download/#section=web-installer
在这里插入图片描述

三.原理

也许大家都听说过,async await 是一个语法糖,编译器会生成一个状态机,那么这个状态机是什么样子,它又是怎样工作的呢?

1:通过dotPeek工具,进行反编译,会看到如下两段代码:

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值