最新公告
  • 欢迎您光临蛙蛙应用,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • www.wawaapp.cn_ASP.Net中的async+await异步编程的实现

     

    这篇文章主要先容了ASP.Net中的async+await异步编程的实现,文中通过示例代码先容的异常详细,对人人的学习或者事情具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    在.NET Framework4.5框架、C#5.0语法中,通过async和await两个关键字,引入了一种新的基于义务的异步编程模子(TAP)。在这种方式下,可以通过类似同步方式编写异步代码,极大简化了异步编程模子。

    用法:

    public async Task<int> GetDotNetCountAsync()
    {
      // Suspends GetDotNetCount() to allow the caller (the web server)
      // to accept another request, rather than blocking on this one.
      var html = await _httpClient.GetStringAsync(“https://dotnetfoundation.org”);

      return Regex.Matches(html, @”\.NET”).Count;
    }

    要点!!!

    1.“async”用来符号一个方式为异步方式,异步方式体内需连系“await”关键字使用,若是没有await,则该方式等同于一个通俗方式。异步方式命名规则通常以Async末端。

    2.“await”关键字只能在异步方式中使用。

    3.当在async异步方式中遇到await操作时,await会壅闭该异步方式不继续往下执行,并将该异步方挂起,将控制权转到该异步方式的挪用者手中。

    4.异步方式的挪用者获得控制权之后:

    1)若是挪用者需要使用异步方式的返回效果,则继续守候异步方式执行完毕,再继续往下执行。

    2)若是挪用者不关心异步方式的返回效果,则继续往下执行。

    场景一:async方式中未使用await

    static void Main(string[] args)
        {
          Console.WriteLine(“执行前Main…..线程ID:” + Thread.CurrentThread.ManagedThreadId.ToString());//步骤①
          GetResultAsync();
          Console.WriteLine(“执行竣事Main….线程ID:” + Thread.CurrentThread.ManagedThreadId.ToString());//步骤②
          Console.ReadKey();
        }

     
        async static Task<int> GetResultAsync()
        {
          Console.WriteLine(“执行前GetResult…..线程ID:” + Thread.CurrentThread.ManagedThreadId.ToString());//步骤③      Task.Delay(3000).Wait();
          Console.WriteLine(“执行竣事GetResult…..线程ID:” + Thread.CurrentThread.ManagedThreadId.ToString());//步骤④
          return 10;
        }

    执行效果:步骤① ——>步骤③——>步骤④——>步骤②

    www.wawaapp.cn_ASP.Net中的async+await异步编程的实现插图

    效果剖析:

    我们会发现,主函数Main挪用异步方式GetResultAsync时,由于异步方式缺少“await”关键字,主函数需等异步方式步骤3,4所有执行竣事后再继续执行步骤2,执行顺序完全和同步方式执行顺序一致;

    而且异步方式会给出语法提醒:缺少“await”关键字

    www.wawaapp.cn_ASP.Net中的async+await异步编程的实现插图1 

    场景2:异步方式体内遇到await之后,立即将控制权转到挪用者手中

    static void Main(string[] args)
        {
          Console.WriteLine(“执行前Main…..线程ID:” + Thread.CurrentThread.ManagedThreadId.ToString());//步骤①       GetResultAsync();
          Console.WriteLine(“执行竣事Main….线程ID:” + Thread.CurrentThread.ManagedThreadId.ToString());//步骤②
          Console.ReadKey();
        }
        async static Task<int> GetResultAsync()
        {
          Console.WriteLine(“执行前GetResult…..线程ID:” + Thread.CurrentThread.ManagedThreadId.ToString());//步骤③
          await Task.Delay(3000);
          Console.WriteLine(“执行竣事GetResult…..线程ID:” + Thread.CurrentThread.ManagedThreadId.ToString());//步骤④
          return 10;
        }

    执行效果:步骤① ——>步骤③——>步骤②——>步骤④

    www.wawaapp.cn_ASP.Net中的async+await异步编程的实现插图2

    效果剖析:

    我们会发现,主函数Main挪用异步方式GetResultAsync,在遇到异步方式中“await”关键字时

    1)壅闭了当前异步方式并立即将控制权转交给挪用者主函数Main

    2)主函数获得控制权后继续执行方式体内步骤2,GetResultAsync方式则异步执行(守候异步操作竣事之后执行步骤4)。

    场景3:异步方式体内遇到await之后,立即将控制权转到挪用者手中,挪用者需守候异步方式返回效果

    static void Main(string[] args)
        {
          Console.WriteLine(“执行前Main…..线程ID:” + Thread.CurrentThread.ManagedThreadId.ToString());//步骤①
          Task<int> res = GetResultAsync();
          Console.WriteLine(“执行竣事Main….线程ID:” + Thread.CurrentThread.ManagedThreadId.ToString());//步骤②
          Console.WriteLine(“执行效果:” + res.Result + “….线程ID:” + Thread.CurrentThread.ManagedThreadId.ToString());//步骤③
          Console.ReadKey();
        }
        async static Task<int> GetResultAsync()
        {
          Console.WriteLine(“执行前GetResult…..线程ID:” + Thread.CurrentThread.ManagedThreadId.ToString());//步骤④
          await Task.Delay(3000);
          Console.WriteLine(“执行竣事GetResult…..线程ID:” + Thread.CurrentThread.ManagedThreadId.ToString());//步骤⑤
          return 10;
        }

    执行效果:步骤① ——>步骤④——>步骤②——>步骤⑤——>步骤③

    www.wawaapp.cn_ASP.Net中的async+await异步编程的实现插图3

    效果剖析:

    我们会发现,主函数Main挪用异步方式GetResultAsync,在遇到异步方式中“await”关键字时

    1)壅闭了当前异步方式并立即将控制权转交给挪用者主函数Main

    2)主函数获得控制权后继续执行方式体内步骤2和步骤3,GetResultAsync方式则异步执行。

    3)当主函数执行步骤3时,由于步骤3需要打印异步方式的返回效果,故需要守候异步方式竣事才气继续。以是需先执行步骤5,然后再继续执行步骤3。

    最后,异步编程的时刻我们通常会连系Task来使用

    到此这篇关于ASP.Net中的async+await异步编程的实现的文章就先容到这了,更多相关ASP.Net async+await异步编程内容请搜索剧本之家以前的文章或继续浏览下面的相关文章希望人人以后多多支持剧本之家!

    泉源:剧本之家

    链接:https://www.jb51.net/article/193915.htm

    申请创业报道,分享创业好点子。,配合探讨创业新机遇!

    爱搬网
    蛙蛙应用 » www.wawaapp.cn_ASP.Net中的async+await异步编程的实现
    • 603会员总数(位)
    • 868资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 479稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情