前言

前今天,在一次Resource Transfer的会议结尾,有人无意中提到了关于Async的问题,很多人知道有这个概念,但具体是什么,什么时候使用,如何使用,为什么要使用等等却不得而知,甚至有人建议找个技术不错的做个Training。

想想,自己也有点悲哀的地方,毕竟之前一直关注技术,接触管理久了,就离技术越来越远了;尤其听着新鲜的东西,自己不会,确实觉得面子有些挂不住,这么长时间,也确实很久没有耐心的学习技术,心里也觉得缺了点什么。

或许是因为缺少了学习技术带了的乐趣,或是没有技术少了那么一点成就感,亦或是怕被技术甩得太远跟不上时代的步伐,总之还是让自己活在“饥饿”中吧。

有句话说的好,好么赶紧去死,要么精彩的活着。

好了,闲话不多说了,下面就开始正题。

什么是Async

Async是下一代异步编程模型,主要用来解决响应(Responsive)问题,这一点尤其对UI来说意义重大。试想一下,当你从远程下载数据的时候,数据很大,需要若干分钟才能下完,但是不下载完的话,应用程序就处于无响应状态,那么这段时间对你来说就被白白的浪费掉了。Async很好的解决了这个问题,不管你有多少数据要下载,只要调用带有async关键字的方法,方法就会在await关键字的地方挂起,并且立即将控制权返回给调用者,当所有一步操作完成后,方法将接着await关键的那一行继续执行。

很多人不是特别清楚什么是异步。其实道理很简单,比如电子邮件系统,同步的方式是发送一封邮件,等待对方的回复,收到后才可以发送第二封,当然这样的效率是很低的。对于异步来说,当你发出了一封邮件,对方可能是3天之后会回复你,你不用等待这么长的时间发送第二封,你想发送几封都可以,想发给谁也随便,那么这就是异步。

而对于并发而言,通常意味着多个操作同一时间执行;或者多个同类型的操作同一时间执行。

如何实现一个Async模式

Async模式的实现需要用到两个关键字,“async","await".

用async修饰一个方法为异步方法,如果没有await配对的关键字,那么方法默认以顺序的方式执行。如果有await,那么会在await出挂起,并将控制权返回给调用者以执行其他的操作。

一般async修饰的方法的返回值是void,Task,或Task<TResult>。

事例如下:

        private async Task TestMethodAsync()        {//......

            HttpClient client = new HttpClient();            client.MaxResponseContentBufferSize = 500000;

            Task<HttpResponseMessage> msgTask = client.GetAsync(new Uri("http://www.microsoft.com"));            HttpResponseMessage msg = await msgTask;

//......        }

就先介绍到这里吧,毕竟时间不早了,我该睡觉了,希望明天可以继续写第二部分。

转载于:https://www.cnblogs.com/lucasluo/archive/2012/02/28/2370664.html

[Async] [Series #1] 初识Async异步编程模型。相关推荐

  1. c# 三种异步编程模型EAP(*)、 APM(*)和 TPL

    为什么80%的码农都做不了架构师?>>>    EAP 是 Event-based Asynchronous Pattern(基于事件的异步模型)的简写 优点是简单,缺点是当实现复杂 ...

  2. 并行开发 —— 第六篇 异步编程模型

    在.net里面异步编程模型由来已久,相信大家也知道Begin/End异步模式和事件异步模式,在task出现以后,这些东西都可以被task包装 起来,可能有人会问,这样做有什么好处,下面一一道来. 一: ...

  3. [你必须知道的异步编程]——异步编程模型(APM)

    本专题概要: 引言 你知道APM吗? 你想知道如何使用异步编程模型编写代码吗? 使用委托也可以实现异步编程,你知道否? 小结 一.引言 在前面的C#基础知识系列中介绍了从C#1.0--C#4.0中一些 ...

  4. 【转】谈谈c#中异步编程模型的变迁**

    大家在编程过程中都会用到一些异步编程的情况.在c#的BCL中,很多api都提供了异步方法,初学者可能对各种不同异步方法的使用感到迷惑,本文主要为大家梳理一下异步方法的变迁以及如何使用异步方法. Beg ...

  5. 【转】异步编程:.NET 4.5 基于任务的异步编程模型(TAP)

    最近我为大家陆续介绍了"IAsyncResult异步编程模型 (APM)"和"基于事件的异步编程模式(EAP)"两种异步编程模型.在.NET4.0 中Micro ...

  6. 【转】1.8异步编程:.NET 4.5 基于任务的异步编程模型(TAP)

    传送门:异步编程系列目录-- 最近我为大家陆续介绍了"IAsyncResult异步编程模型 (APM)"和"基于事件的异步编程模式(EAP)"两种异步编程模型. ...

  7. C#异步编程-------异步编程模型(APM)

    术语解释: APM               异步编程模型, Asynchronous Programming Model EAP                基于事件的异步编程模式, Event ...

  8. 异步编程模型(C#5.0系列)

    关于C#5.0的新功能--async和await关键字.它们是语法糖,可以简化异步操作代码的构造.当C#编译器看到一个await表达式时,它会生成代码,该代码自动异步地调用该表达式,然后立即将控制流返 ...

  9. 8天玩转并行开发——第六天 异步编程模型

    原文:8天玩转并行开发--第六天 异步编程模型 在.net里面异步编程模型由来已久,相信大家也知道Begin/End异步模式和事件异步模式,在task出现以后,这些东西都可以被task包装 起来,可能 ...

最新文章

  1. mysql int char连接_MySQL中int、char以及varchar的性能比较
  2. 复习es6-解构赋值+字符串的扩展
  3. git push 不再需要重复输入账户密码的技巧
  4. 怎么遍历服务器文件夹,遍历远程服务器某个文件夹下的文件
  5. 关于Could not parse configuration: /hibernate.cfg.xml的问题
  6. skip-gram模型结构
  7. jQuery以Post方式发送请求并获取返回的文件供下载!
  8. matplotlib基础函数函数 plot, figure
  9. python几种排序_Python实现几种排序算法
  10. 怎样配置VSS2005中文版服务器和客户端
  11. 深入浅出Python闭包
  12. 图书馆占座系统(二)
  13. 北大软微计算机技术硕士复试,【高分学长带你飞】北大软微408学长超详经验贴...
  14. Cocos 3D开源游戏案例
  15. 点击链接元素出现蓝色边框或者出现半透明蓝色背景
  16. EasyBoot中文启动光盘制作教程
  17. 图片云存储服务商在阿里云和又拍云之间如何选择?
  18. 计算机常用英语单词对照
  19. 《Cinema 4D + After Effects动态图形设计案例解析》——第 1 章 动态图形设计概述 1.1 什么是动态图形...
  20. 【枚举 + 求最大公约数方法】最大公约数等于K的子数组数目问题

热门文章

  1. OpenShift 4 - 查看Node上的日志
  2. OpenShift 4.3 - 基于虚拟机的BareMetal离线安装(1-2)
  3. 将您的SQL Server工作负载迁移到PostgreSQL
  4. 中国计算机学会推出 CSP 非专业级别认证
  5. inodesusedpercent_Linux系统中常用的监控指标整理
  6. python共享内存通信mapofview_python map eval strPython socket模块实现的udp通信功能示例...
  7. 样条曲面_用SolidWorks曲面制作一个:台灯底座造型
  8. 计算机九大核心课程,九大变化,透析IB(国际文凭)课程发展趋势
  9. ionic4 富文本
  10. 微信小程序 Image 图片实现宽度100%,高度自适应