async/await 的使用
async
:
使用 async
修饰符可将方法、lambda 表达式或匿名方法指定为异步。 如果对方法或表达式使用此修饰符,则其称为异步方法
await:
await
运算符应用于异步方法中的任务,在方法的执行中插入挂起点,直到所等待的任务完成,返回线程池。 任务表示正在进行的工作。
区别:
执行流程:
异步用例:
只有拥有async才能在其内部使用await关键字。异步方法可以具有Task、Task<>或void的返回类型;
- class Program
- {
- static void Main(string[] args)
- {
- Console.WriteLine("主线程测试开始..");
- AsyncMethod();
- Thread.Sleep(1000);
- Console.WriteLine("主线程测试结束..");
- Console.ReadLine();
- }
- static async void AsyncMethod()
- {
- Console.WriteLine("开始异步代码");
- var result = await MyMethod();//var result = MyMethod().Result
- Console.WriteLine("异步代码执行完毕");
- }
- static async Task<int> MyMethod()
- {
- for (int i = 0; i < 5; i++)
- {
- Console.WriteLine("异步执行" + i.ToString() + "..");
- await Task.Delay(1000); //模拟耗时操作
- }
- return 0;
- }
- }
Thread多线程异步编程例子:
- class Program
- {
- static void Main(string[] args)
- {
- Console.WriteLine("主线程测试开始..");
- Thread th = new Thread(ThMethod);
- th.Start();
- Thread.Sleep();
- Console.WriteLine("主线程测试结束..");
- Console.ReadLine();
- }
- static void ThMethod()
- {
- Console.WriteLine("异步执行开始");
- for (int i = ; i < ; i++)
- {
- Console.WriteLine("异步执行" + i.ToString() + "..");
- Thread.Sleep();
- }
- Console.WriteLine("异步执行完成");
- }
- }
参考: https://www.cnblogs.com/jara/p/3405098.html //线程池传送门
https://www.cnblogs.com/yifengjianbai/p/5499493.html
https://www.cnblogs.com/color-wolf/p/5448458.html
https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/concepts/async/
https://www.cnblogs.com/chengjun/p/5366047.html
async/await 的使用的更多相关文章
- async & await 的前世今生(Updated)
async 和 await 出现在C# 5.0之后,给并行编程带来了不少的方便,特别是当在MVC中的Action也变成async之后,有点开始什么都是async的味道了.但是这也给我们编程埋下了一些隐 ...
- [.NET] 利用 async & await 的异步编程
利用 async & await 的异步编程 [博主]反骨仔 [出处]http://www.cnblogs.com/liqingwen/p/5922573.html 目录 异步编程的简介 异 ...
- [.NET] 怎样使用 async & await 一步步将同步代码转换为异步编程
怎样使用 async & await 一步步将同步代码转换为异步编程 [博主]反骨仔 [出处]http://www.cnblogs.com/liqingwen/p/6079707.html ...
- [.NET] 利用 async & await 进行异步 IO 操作
利用 async & await 进行异步 IO 操作 [博主]反骨仔 [出处]http://www.cnblogs.com/liqingwen/p/6082673.html 序 上次,博主 ...
- [C#] 走进异步编程的世界 - 开始接触 async/await
走进异步编程的世界 - 开始接触 async/await 序 这是学习异步编程的入门篇. 涉及 C# 5.0 引入的 async/await,但在控制台输出示例时经常会采用 C# 6.0 的 $&qu ...
- ASP.NET 中的 Async/Await 简介
本文转载自MSDN 作者:Stephen Cleary 原文地址:https://msdn.microsoft.com/en-us/magazine/dn802603.aspx 大多数有关 async ...
- C# async/await 使用总结
今天搞这两个关键字搞得有点晕,主要还是没有彻底理解其中的原理. 混淆了一个调用异步方法的概念: 在调用异步方法时,虽然方法返回一个 Task,但是其中的代码已经开始执行.该方法在调用时,即刻执行了一部 ...
- 【转】async & await 的前世今生
async 和 await 出现在C# 5.0之后,给并行编程带来了不少的方便,特别是当在MVC中的Action也变成async之后,有点开始什么都是async的味道了.但是这也给我们编程埋下了一些隐 ...
- async & await 的前世今生
async 和 await 出现在C# 5.0之后,给并行编程带来了不少的方便,特别是当在MVC中的Action也变成async之后,有点开始什么都是async的味道了.但是这也给我们编程埋下了一些隐 ...
- C# Async, Await and using statements
Async, Await 是基于 .NEt 4.5架构的, 用于处理异步,防止死锁的方法的开始和结束, 提高程序的响应能力.比如: Application area Support ...
随机推荐
- python练习题-day17
1.计算n!,例如n=3(计算321=6), 求10! 2.已知一个数列:1.1.2.3.5.8.13.....的规律为从3开始的每一项都等于其前两项的和,这是斐波那契数列.求满足规律的100以内的所 ...
- 20190429 照片里面的GPS信息确实会暴露经纬度
这是我用Android手机拍摄的照片,并上传了原图(当然在没开启定位的工作的话,照片也没有GPS这个属性显示) 2. 之前也有一种关于给陌生人点赞,通过点赞来查看你与这个陌生人的距离,我也测试了一下有 ...
- 【git】强制覆盖本地代码(与git远程仓库保持一致)
git强制覆盖: git fetch --all git reset --hard origin/master git pull git强制覆盖本地命令(单条执行): git ...
- vue 封装组件
props 接收数据 props对象里面 键值 是对改数据的 数据类型 的规定.做了规范,使用者就只能传输指定类型的数据,否则报警告 先根据要求写出完整的代码,再一一用参数实现组件封装 这里试着封装一 ...
- Azure架构(一):云计算基础
云计算的定义 云计算(英语:cloud computing),是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需求提供给使用各种计算终端(桌面电脑.笔记本电脑.平板电脑.手机等) ...
- windows 下面make的使用示例
---恢复内容开始--- 前面已经安装了windows下面的编译器g++和mingw32-make,下面就make做个示例说明 1.文档结构 |--src |--comm ...
- ArrayList 和 LinkList 的区别
ArrayList 的相关知识 public class ArrayList<E> extends AbstractList<E>implements List<E> ...
- redux中间件的原理
前言react已经出来很久了,其生态圈之庞大,一锅炖不下!各种react-xx,已让我们不堪重负,github上随便一个demo,引入的模块至少都是五指之数+.看着头疼,嚼之无味…….在此建议新学者, ...
- 比NGINX更快:nginx-1.15.5 vs mongols-1.2.3
nginx是多进程web服务器的优秀代表. 本文要用mongols-1.2.3实现一个比nginx更快的多进程的web服务器. mongols是C++ 服务器基础设施库, 它的主要特性如下: tcp ...
- git clone git@github.com:snuglove/ 报错
[root@qc_centos7_5 ~]# git clone git@github.com:snuglove/Job-hunting-related.git Cloning into 'Job-h ...