C#中的async/await

首先async/await只是一个语法糖来的,并不是什么新东西,定义使用什么的我找了下网上的,内容差不多。

用async来修饰一个方法,表明这个方法是异步的,声明的方法的返回类型必须为:void或Task或Task<TResult>。方法内部必须含有await修饰的方法,如果方法内部没有await关键字修饰的表达式,哪怕函数被async修饰也只能算作同步方法,执行的时候也是同步执行的。 

看一个例子:


首先从main方法进入,线程是1,然后进入进入test01方法,这个时候是以同步的方式运行的,所以打印的线程id(控制台输出第二哈行)也是1,

然后遇到第一个await,await代表等待,后面所跟的方法里面会有异步操作,所以此时不会行下运行(异步操作不是在这里开启),进入Method01方法,但是在这里还是同步方式执行(控制台第二行打印id依然为1),遇到第二个await,后面接的是Task.Run()方法,这个代表开启了异步操作,从线程池中获取新的线程来执行该段代码,原有调用线程返回向下执行或者挂起(释放),从这里开始到后面的代码都是由该子线程执行(可以看作是它的回调函数),可以查看控制台输出结果,这样就以同步的方式实现异步编程,主要区别是它不是单一线程,而是多线程。以上就是个人简单的理解,如有纰漏欢迎指出。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

友情链接更多精彩内容