本文关键详细介绍了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;
}
实行結果:流程① ——>流程③——>流程④——>流程②