zoukankan      html  css  js  c++  java
  • Async/Await 同步方法中的异步方法和异步方法中的异步方法

    1、同步方法中有异步方法

      执行顺序是:Await就等待。同步方法中当遇见异步方法中Await将直接跳出异步方法,继续往下执行同步方法的代码,当异步Await处理完后接着CallBack到异步方法中,执行(刚跳出)Await下面的代码

      

     public void DoRun1()
            {
                Console.WriteLine("Caller: Before call");
                ShowDealyAsync();
                Console.WriteLine("Caller: After call");
            }
    
            public async Task ShowDealyAsync()
            {
                sw.Start();
                Console.WriteLine("  Before Delay: {0}", sw.ElapsedMilliseconds);
                await Task.Delay(3000);   //执行到await表达式时,立即返回到调用方法,等待5秒后执行后续部分
                Console.WriteLine(" After Delay : {0}", sw.ElapsedMilliseconds);//后续部分
            }

     

     2. 异步方法中的异步方法

      执行顺序是自上而下得顺序,跟同步方法没两样

    所以,一定要注意别把异步方法和同步方法弄混淆。 

     await Task.Delay(TimeSpan.FromSeconds(3));  这句代码在不同的方法中调用会出现不同的结果。

    看下面代码:

     DoRun1()方法和Show方法,在同步方法中调用会有不同的结果。

    DoRun1()结果: 堵塞三秒

     Show方法结果:,然后等待三秒,打印出后两句

  • 相关阅读:
    java 集合排序
    java传值和传址
    Dom4j操作xml
    JAXP操作xml
    乐观锁和悲观锁【转】
    java IO【转】
    java 可变参数
    Eclipse调试Java的10个技巧【转】
    编译JDK源代码【转】
    Access restriction: The method typeNameToClass(String) from the type ObjectHandler is not accessible due to restriction on required library
  • 原文地址:https://www.cnblogs.com/ilison/p/12488102.html
Copyright © 2011-2022 走看看