zoukankan      html  css  js  c++  java
  • 关于 async 与 await的个人理解

    async  与 await是一种能够快速编写异步程序的方式

    async为方法的修饰符,表示该类可以进行异步操作,await只能存在于异步方法中

     1      static void Main(string[] args)
     2         {
     3             Console.WriteLine("-------主线程启动-------");
     4             var m = GetLengthAsync();
     5             Console.WriteLine("Main方法做其他事情");
     6             //var m = task.Result;
     7            // m.Wait();
     8             Console.WriteLine("Main方法做其他事情2");
     9             Console.WriteLine("Task返回的值");
    10             Thread.Sleep(4000);
    11             Console.WriteLine("-------主线程结束-------");
    12             Console.ReadKey();
    13         }
    14         static async Task GetLengthAsync()
    15         {
    16             Console.WriteLine("GetLengthAsync Start");
    17             await GetStringAsync();
    18             Thread.Sleep(3000);
    19             Console.WriteLine("GetLengthAsync End");
    20            // m.Wait();
    21 
    22             //return str.Length;
    23         }
    24 
    25         static Task GetStringAsync()
    26         {
    27             return Task.Run(() => { Thread.Sleep(2000); Console.WriteLine("haha"); });
    28         }

    一开始按照同步的方式进行,进如getlengthAsync方法,进行到await修饰符的方法时,后面的方法与主线程异步进行 5行开始进行  当17完成时,继续进行18、19的操作与主线程异步进行 11停留4秒 19总共停留5秒,因此19约比11晚1秒出现

    既 异步方法中遇到await关键字时,await后面所有的都以异步的形式进行下去

  • 相关阅读:
    Java 线程:(一)
    RK:Webview、Chrome
    CocosCreator 加载Bundle里的Prefab
    Canvas 绘画
    CocosCreator 要用3D节点实现skewX
    Unity 动态创建网格
    凹多边形三角剖分
    UnityHub 登录失败
    浮点数
    八皇后问题(回溯算法)
  • 原文地址:https://www.cnblogs.com/guofu/p/5262696.html
Copyright © 2011-2022 走看看