控件中国网现已改版,您看到的是老版本网站的镜像,系统正在为您跳转到新网站首页,请稍候.......
中国最专业的商业控件资讯网产品咨询电话:023-67870900 023-67871946
产品咨询EMAIL:SALES@COMPONENTCN.COM

初识Async异步编程模型

作者:未知 出处:cnblogs 2012年02月28日 阅读:

前言

前今天,在一次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;

            //......
        }

热推产品

  • ActiveReport... 强大的.NET报表设计、浏览、打印、转换控件,可以同时用于WindowsForms谀坔攀戀Forms平台下......
  • AnyChart AnyChart使你可以创建出绚丽的交互式的Flash和HTML5的图表和仪表控件。可以用于仪表盘的创......
首页 | 新闻中心 | 产品中心 | 技术文档 | 友情连接 | 关于磐岩 | 技术支持中心 | 联系我们 | 帮助中心 Copyright-2006 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 电话:023 - 67870900 传真:023 - 67870270 产品咨询:sales@componentcn.com 渝ICP备12000264号 法律顾问:元炳律师事务所 重庆市江北区塔坪36号维丰创意绿苑A座28-5 邮编:400020
在线客服
在线客服系统
在线客服
在线客服系统