zoukankan      html  css  js  c++  java
  • 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 应仅用于事件处理程序

  • 相关阅读:
    通信—互联网协议入门2(转载)
    通信—互联网协议入门1(转载)
    通信—HTTP 协议入门(转载)
    通信—跨域资源共享
    ionic3使用echart插件
    通信—HTTP与HTTPS
    ionic学习笔记—常用命令
    ionic学习笔记—创建项目
    Spark 资源池简介
    数据库设计原则
  • 原文地址:https://www.cnblogs.com/jingjingweixiao/p/10987312.html
Copyright © 2011-2022 走看看