码迷,mamicode.com
首页 > Windows程序 > 详细

C#5.0异步

时间:2019-06-07 00:31:47      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:isp   eth   模型   执行   nbsp   load   事件   alc   col   

异步编程

忘掉那些繁琐的异步编程模型吧!领略下C#5.0带来的便捷性

应用场景

当需要I/O绑定(例如从网络请求数据或访问数据库)

当使用CPU绑定代码(例如执行成本高昂的计算)

异步模型的概述

对于I/O绑定的代码,当你await一个操作,它将返回async方法中的一个Task或Task<T>

对于CPU绑定代码,当你await一个操作,它将在后台线程通过Task.Run方法启动

await关键字有这奇妙的作用,当你await一个操作,它控制执行await的方法的调用方,且最终允许UI具有响应性或服务具有灵活。

示例

I/O绑定情景下:

        private readonly HttpClient _httpClient = new HttpClient();

        downloadButton.Clicked+=async(o, e) =>
        {
          var stringData = await _httpClient.GetStringAsync(URL);
        DoSomethingWithData(stringData);

消耗CPU大量计算下:

        private DamagResult CalculateDamageDone()
        {
            //do lots of Calcute
        }

        button.Click+= async(o, e) =>
        {
          var result = await Task.Run(() => CalculateDamageDone());
        DisplayDamage(result);
         }

备注:

async方法需在其主体中具有awat关键字,否则它们将永不暂停

async void 应仅用于事件处理程序

 

C#5.0异步

标签:isp   eth   模型   执行   nbsp   load   事件   alc   col   

原文地址:https://www.cnblogs.com/jingjingweixiao/p/10987312.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!