如果指定使用 异步 或 异步 修饰符,方法是异步方法,可以实现以下两个函数。 
• 清单异步方法可以使用 Await 或指定的 等待 悬挂点。  等待运算符通知编译器异步方法不能继续点的过去,直到等待的异步过程完成。 同时,控制权交还异步方法的调用方。
一个异步方法的备用在等待表达式的不构成从方法的退出,并且,finally 块不会运行。 
• 清单异步方法本身可以通过调用它的方法等待。 
异步方法通常包含等待运算符的一个或多个匹配项,但是,请假等待表达式不会导致编译器错误。  如果异步方法不会将等待运算符指示悬挂点,方法尽管"修饰符执行,一个同步方法。 编译器会发出此类方法的警告。

异步方法旨在成为非阻塞操作。  当等待的任务运行时,在异步方法的一个等待表达式不会阻止当前线程。 相反,该表达式注册该方法的其余部分作为继续并返回控制对异步方法的调用方。

异步和等待关键字不会导致其他线程创建。  因为异步方法本身并不会运行的线程,异步方法不需要多线程。 只有 + 当方法处于活动状态,则方法在当前同步上下文中运行并使用在线程的时间。 可以使用 Task.Run 移动 CPU 工作移到后台线程,但是,后台线程不利于等待结果变得可用处理。

以异步编程的基于异步的方法优于于几乎每个用例的现有方法。  具体而言,此方法比 IO 操作的 BackgroundWorker 好,因为代码更为简单的,因此无需防止争用条件。 与 Task.Run的组合,异步编程的 CPU 操作的 BackgroundWorker 好,因为异步编程从 Task.Run 传输到线程池的工作分隔运行您的代码以协调详细信息。 ——MSDN

其实按照我的理解”async”标记的方法,告诉编译器方法内有Await ,而当程序运行到Await 代码块的时候,将会作为异步处理,当异步处理完成后,继续处理下面代码。期间不会造成期阻塞线程以及UI无响应的情况。

1.普通示例

  1. using System;
  2. using System.Threading;
  3. using System.Threading.Tasks;
  4.  
  5. namespace ConsoleApplication19
  6. {
  7. class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. AsyncText();
  12. Console.ReadLine();
  13. }
  14. static async void AsyncText()
  15. {
  16. Console.WriteLine("--------------AsyncText Start------------");
  17. await Task.Run(() =>
  18. {
  19. Thread.Sleep(5000);
  20. Console.WriteLine("--------------AsyncText.....------------");
  21. });
  22. Console.WriteLine("--------------AsyncText End------------");
  23. }
  24. }
  25. }

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }代码效果

[C#]async/Await 使用小计的更多相关文章

  1. es6之 async await 使用小计

    var sleep = (time)=>{ return new Promise((resolve,reject)=>{ setTimeout(()=>{ resolve('ok') ...

  2. [微信小程序] 终于可以愉快的使用 async/await 啦

    [小程序] 终于可以愉快的使用 async/await 啦 这篇文章主要是想说一下 怎么在微信小程序中使用async/await从而逃离回调地狱 背景 最近一直在搞微信小程序 用的语言是TypeScr ...

  3. 【WePY小程序框架实战四】-使用async&await异步请求数据

    [WePY小程序框架实战一]-创建项目 [WePY小程序框架实战二]-页面结构 [WePY小程序框架实战三]-组件传值 async await 是对promise的近一步优化,既解决了promise链 ...

  4. 微信小程序 - async/await

    下面只是做一些介绍以及使用的原因,详情介绍还请移步博主:https://www.cnblogs.com/SamWeb/p/8417940.html regenerator-runtime下载:http ...

  5. 微信小程序捕获async/await函数异常实践

    背景 我们的小程序项目的构建是与web项目保持一致的,完全使用webpack的生态来构建,没有使用小程序自带的构建功能,那么就需要我们配置代码转换的babel插件如Promise.Proxy等:另外, ...

  6. 小程序如何支持使用 async/await

    下载 regenerator-runtime npm i regenerator-runtime 如何使用 在小程序中,不认识 node_modules 文件夹,无法通过以下方法来直接找到包文件 im ...

  7. 小程序如何支持使用 async/await (构建npm版)

    前言 小程序本身是不支持async/await语法的,但有些应用场景,我们使用async/await会使得代码更简洁,也更易于维护,用过都知道是有多爽的.既然小程序不支持,那我们可以借助 fackbo ...

  8. 答应我,这次必须搞懂!痛点难点Promise。(小点心async/await,基于Promise的更优方案)

    Promise 出现的原因 在 Promise 出现以前,我们处理一个异步网络请求,大概是这样: // 请求 代表 一个异步网络调用. // 请求结果 代表网络请求的响应. 请求1(function( ...

  9. 使用 async await 封装微信小程序HTTP请求

    1. 编写将普通回调函数形式的方法转换为promise方法的promisic方法 // util.js const promisic = function (func) { return functi ...

随机推荐

  1. libpcre.so.1 cannot be found

    安装完Nginx之后,启动报错. [vagrant@localhost sbin]$ sudo ./nginx ./nginx: error while loading shared librarie ...

  2. jQuery -> 获取/设置/删除DOM元素的属性

    jQuery的属性操作很easy,以下以一个a元素来说明属性的获取/设置/删除操作 <body> <a>jquery.com</a> </body> 加 ...

  3. Ubuntu 12.04 64bit 配置完android 5.0编译环境后出现“could not write bytes: Broken pipe.”而无法进入输入帐号密码的登陆界面

    Ubuntu 12.04 64bit 配置完android 5.0编译环境后出现“could not write bytes: Broken pipe.”而无法进入输入帐号密码的登陆界面.上网问了问百 ...

  4. tomcat安全配置之证书密码加密存储

    最近项目组要完成一个新Web Servicer接口的开发,其中有项要求是支持外部客户程序以https方式访问这些SOAP接口.项目组当前基于tomcat6.0.29开发,axis版本为1.4.拿到这个 ...

  5. JS数组定义

     JS数组定义收藏 function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.create ...

  6. 【转】BeagleBone Black USB一线通(3)

    接上篇  BeagleBone Black 一线通(2) 五.vnc图形终端 虽然 BB-Black带有一个Micro-HDMI接口,不过那么名片不到的一个小板,连接到一个20来寸的显示器上,还是有些 ...

  7. jQuery动态实现title的修改 失效问题

    最近做了一个网站,一切都很顺利,在上线的时候,突然发现一个严重的问题,开始面对这个问题,完全不知所措(在goole.火狐.IE9及其以上都没得问题:IE8及其低版本都失效)只是浏览器弹出一个bug,但 ...

  8. Calendar类的基本使用

    import java.util.Calendar; public class CalendarDemo{ public static void main(String[] args) { Calen ...

  9. Java基础知识强化之IO流笔记58:内存操作流

    1. 内存操作流: 用来操作处理临时存储的信息的. (1)操作字节数组: ByteArrayInputStream ByteArrayOutputStream 代码示例: package cn.itc ...

  10. linux-ssh远程后台执行脚本-放置后台执行问题(转)

    写了一个监控负载的小脚本(死循环,测试结束后再kill对应进程),因需要监控多台服务器,所以在一台服务器上使用ssh统一执行脚本遇到问题:使用ssh root@172.16.146.20 '/usr/ ...