.Net 4.5 的async 和await 的简单理解使用
2016-05-24 14:07
786 查看
原文地址:http://www.cnblogs.com/HJL-Blog/p/4432632.html
所谓的异步编程是利用CPU空闲时间和多核的特性,它所返回的Task或Task<TResult>是对await的一个承诺,当任务执行完毕后返回一个结果给接收者
方法签名包含一个 Async 或 async 修饰符。
按照约定,异步方法的名称以“Async”后缀结尾。
返回类型为下列类型之一:
如果你的方法有操作数为 TResult 类型的返回语句,则为 Task<TResult>。
如果你的方法没有返回语句或具有没有操作数的返回语句,则为 Task。
如果你编写的是异步事件处理程序,则为 Void(Visual Basic 中为 Sub)。
有关详细信息,请参见本主题后面的“返回类型和参数”。
方法通常包含至少一个 await 表达式,该表达式标记一个点,在该点上,直到等待的异步操作完成方法才能继续。 同时,将方法挂起,并且控件返回到方法的调用方。(这里所谓的挂起就是上文所提到的承诺,异步方法承诺会给调用方一个结果)
所谓的异步编程是利用CPU空闲时间和多核的特性,它所返回的Task或Task<TResult>是对await的一个承诺,当任务执行完毕后返回一个结果给接收者
方法签名包含一个 Async 或 async 修饰符。
按照约定,异步方法的名称以“Async”后缀结尾。
返回类型为下列类型之一:
如果你的方法有操作数为 TResult 类型的返回语句,则为 Task<TResult>。
如果你的方法没有返回语句或具有没有操作数的返回语句,则为 Task。
如果你编写的是异步事件处理程序,则为 Void(Visual Basic 中为 Sub)。
有关详细信息,请参见本主题后面的“返回类型和参数”。
方法通常包含至少一个 await 表达式,该表达式标记一个点,在该点上,直到等待的异步操作完成方法才能继续。 同时,将方法挂起,并且控件返回到方法的调用方。(这里所谓的挂起就是上文所提到的承诺,异步方法承诺会给调用方一个结果)
static void Main(string[] args) { Console.WriteLine("主方法开始"); ExeAsync(); Console.WriteLine("主方法结束"); Console.ReadKey(); } /// <summary> /// 需要去执行耗时的异步方法 /// </summary> static async void ExeAsync() { Console.WriteLine("异步开始..."); //等待异步方法执行完后,才继续执行下一步, //但是这里会返回给调用者继续执行主线程方法 int res = await GoAsync(); Console.WriteLine("异步结束...res: " + res); } /// <summary> /// 异步耗时方法 /// </summary> /// <returns></returns> static async Task<int> GoAsync() { for (int i = 0; i < 2; i++) { //模拟耗时操作 HttpClient client = new HttpClient(); Task<string> getStringTask = client.GetStringAsync("http://msdn.microsoft.com"); Console.WriteLine(DateTime.Now.Millisecond + " 异步 " + (await getStringTask).Length); } return 100; }
相关文章推荐
- AEAI ESB路由转换机制说明
- rails devise使用
- hdu1151Air Raid(最小路径)
- 磁盘分区与格式化挂载,创建逻辑卷与raid组建和快照。
- 算法杂货铺——分类算法之朴素贝叶斯分类(Naive Bayesian classification)
- 【论文笔记】Deep Structured Output Learning for Unconstrained Text Recognition
- AIX slibclean
- Odoo 中group domain的优化应用
- Facebook查找RetainCycle开源库的分析
- Kairosdb集群的搭建
- 转载出去:http://blog.csdn.net/han_xiaoyang/article/details/11969497
- HDU 2686 Matrix||HDU 3376 Matrix Again (拆点费用流)
- HDU 1023 Train Problem II (卡特兰数)
- Light OJ 1296 - Again Stone Game (博弈sg函数递推)
- AIX5.3扩容文件系统时报0516-404
- The Chain Of Responsibility (1)
- The Chain Of Responsibility (1)
- http://zhidao.baidu.com/link?url=3tJ_i5gyYLrd7rFPk0eRYre_oxjCZvTOMOutp89LGhUgi6Ic6Ncama_GMAHnwfF73SVYGqy364vDfv6AY4ERPa
- 依靠国家资源,发展人工智能
- 国家发力,大力推进我国人工智能产业的大发展