C#5.0异步

异步编程

忘掉那些繁琐的异步编程模型吧!领略下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 应仅用于事件处理程序

猜你喜欢

转载自www.cnblogs.com/jingjingweixiao/p/10987312.html
今日推荐