ASP.Net中的async await异步编程的完成
  • 作者:admin
  • 发表时间:2020-10-30 07:50
  • 来源:未知

本文关键详细介绍了ASP.Net中的async await异步编程的完成,原文中根据实例编码详细介绍的十分详尽,对大伙儿的学习培训或是工作中具备一定的参照学习培训使用价值,必须的小伙伴们下边伴随着我来一起学习了解一下吧

在.NET Framework4.5架构、C#5.0英语的语法中,根据async和await2个关键词,导入了一种新的根据每日任务的异步编程实体模型(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.ToStrin唐山市小程序定制开发g());//流程①
      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;
    }

实行結果:流程① ——>流程③——>流程④——>流程②