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 的使用的更多相关文章

  1. async & await 的前世今生(Updated)

    async 和 await 出现在C# 5.0之后,给并行编程带来了不少的方便,特别是当在MVC中的Action也变成async之后,有点开始什么都是async的味道了.但是这也给我们编程埋下了一些隐 ...

  2. [.NET] 利用 async & await 的异步编程

    利用 async & await 的异步编程 [博主]反骨仔 [出处]http://www.cnblogs.com/liqingwen/p/5922573.html  目录 异步编程的简介 异 ...

  3. [.NET] 怎样使用 async & await 一步步将同步代码转换为异步编程

    怎样使用 async & await 一步步将同步代码转换为异步编程 [博主]反骨仔 [出处]http://www.cnblogs.com/liqingwen/p/6079707.html  ...

  4. [.NET] 利用 async & await 进行异步 IO 操作

    利用 async & await 进行异步 IO 操作 [博主]反骨仔 [出处]http://www.cnblogs.com/liqingwen/p/6082673.html  序 上次,博主 ...

  5. [C#] 走进异步编程的世界 - 开始接触 async/await

    走进异步编程的世界 - 开始接触 async/await 序 这是学习异步编程的入门篇. 涉及 C# 5.0 引入的 async/await,但在控制台输出示例时经常会采用 C# 6.0 的 $&qu ...

  6. ASP.NET 中的 Async/Await 简介

    本文转载自MSDN 作者:Stephen Cleary 原文地址:https://msdn.microsoft.com/en-us/magazine/dn802603.aspx 大多数有关 async ...

  7. C# async/await 使用总结

    今天搞这两个关键字搞得有点晕,主要还是没有彻底理解其中的原理. 混淆了一个调用异步方法的概念: 在调用异步方法时,虽然方法返回一个 Task,但是其中的代码已经开始执行.该方法在调用时,即刻执行了一部 ...

  8. 【转】async & await 的前世今生

    async 和 await 出现在C# 5.0之后,给并行编程带来了不少的方便,特别是当在MVC中的Action也变成async之后,有点开始什么都是async的味道了.但是这也给我们编程埋下了一些隐 ...

  9. async & await 的前世今生

    async 和 await 出现在C# 5.0之后,给并行编程带来了不少的方便,特别是当在MVC中的Action也变成async之后,有点开始什么都是async的味道了.但是这也给我们编程埋下了一些隐 ...

  10. C# Async, Await and using statements

    Async, Await 是基于 .NEt 4.5架构的, 用于处理异步,防止死锁的方法的开始和结束, 提高程序的响应能力.比如: Application area           Support ...

随机推荐

  1. 2019-04-27 Python之有关文件的学习

    一.文件 1.简介 二.文件的相关操作 1.打开文件 例如:  f = open("F:\\text.txt", 'r') 只读模式,不可写入 2.读取文件 例如: f.readl ...

  2. 基于Spark自动扩展scikit-learn (spark-sklearn)(转载)

    转载自:https://blog.csdn.net/sunbow0/article/details/50848719 1.基于Spark自动扩展scikit-learn(spark-sklearn)1 ...

  3. zipkin链路追踪

    zipkin架构说明 zipkin api 我想自己搞一些满足zipkin格式的日志,入库es,然后让zipkin仅做展示 1.需要了解zipkin组件 2,学习zipkin设计原理,何时何地产生日志 ...

  4. xamarin.Android开发前的配置

    vs2019开发 入门教程 https://docs.microsoft.com/zh-cn/xamarin/android/get-started/installation/android-emul ...

  5. Openrasp源码分析

    Openrasp是百度关于rasp技术的开源项目,由于工作需要,之前对rasp的源码进行了简单的分析.文章是之前就写好的,现在放出了,希望对大家有写帮助. OpenRASP中java引擎的源码分析 安 ...

  6. https----------如何在phpstudy环境下配置apache的https访问以及访问http自动跳转成https

    1.首先在 httpd.conf里面修改几个地方 找到 #LoadModule ssl_module modules/mod_ssl.so 去掉前面的# Include conf/vhosts.con ...

  7. Ubuntu16.04彻底删除PHP7.2

    一.删除php的相关包及配置 apt-get autoremove php7* 二.删除关联 sudo find /etc -name "*php*" |xargs  rm -rf ...

  8. PeopleSoft Excel To CI

    Excel to CI 链接信息要注意,HTTP还是HTTPS, 端口号从链接可以看到,没有的话可能是默认80端口. 像一下这个页面也可以用CI 导入数据(secondary page)

  9. CentOS 6.9 升级OpenSSH版本 关闭ssh服务后门

    最近用低版本的OpenSSH(5.9p1版本) 的漏洞给系统留了个后门 , 可以劫持root密码或者给root开启后门密码 : 利用Openssh后门 劫持root密码 如果公司还在用CentOS6的 ...

  10. LR12中针对WebServices协议的三种脚本开发模式

    一,webservices协议简介 webservices是建立可交互操作的分布式应用程序的新平台,它通过一系列的标准和协议来保证程序之间的动态连接, 其中最基本的协议包括soap,wsdl,uddi ...