真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

怎么在ASP.Net中利用async+await實現異步編程-創(chuàng)新互聯(lián)

本篇文章給大家分享的是有關怎么在ASP.Net中利用async+await實現異步編程,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

為玉樹等地區(qū)用戶提供了全套網頁設計制作服務,及玉樹網站建設行業(yè)解決方案。主營業(yè)務為網站設計制作、成都做網站、玉樹網站設計,以傳統(tǒng)方式定制建設網站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

在.NET Framework4.5框架、C#5.0語法中,通過async和await兩個關鍵字,引入了一種新的基于任務的異步編程模型(TAP)。在這種方式下,可以通過類似同步方式編寫異步代碼,極大簡化了異步編程模型。

用法:

public async Task 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,則該方法等同于一個普通方法。異步方法命名規(guī)則通常以Async結尾。

2.“await”關鍵字只能在異步方法中使用。

3.當在async異步方法中遇到await操作時,await會阻塞該異步方法不繼續(xù)往下執(zhí)行,并將該異步方掛起,將控制權轉到該異步方法的調用者手中。

4.異步方法的調用者獲得控制權之后:

1)如果調用者需要使用異步方法的返回結果,則繼續(xù)等待異步方法執(zhí)行完畢,再繼續(xù)往下執(zhí)行。

2)如果調用者不關心異步方法的返回結果,則繼續(xù)往下執(zhí)行。

場景一:async方法中未使用await

static void Main(string[] args)
    {
      Console.WriteLine("執(zhí)行前Main.....線程ID:" + Thread.CurrentThread.ManagedThreadId.ToString());//步驟①
      GetResultAsync();
      Console.WriteLine("執(zhí)行結束Main....線程ID:" + Thread.CurrentThread.ManagedThreadId.ToString());//步驟②
      Console.ReadKey();
    }

 
    async static Task GetResultAsync()
    {
      Console.WriteLine("執(zhí)行前GetResult.....線程ID:" + Thread.CurrentThread.ManagedThreadId.ToString());//步驟③      Task.Delay(3000).Wait();
      Console.WriteLine("執(zhí)行結束GetResult.....線程ID:" + Thread.CurrentThread.ManagedThreadId.ToString());//步驟④
      return 10;
    }

執(zhí)行結果:步驟① ——>步驟③——>步驟④——>步驟②

怎么在ASP.Net中利用async+await實現異步編程

結果分析:

我們會發(fā)現,主函數Main調用異步方法GetResultAsync時,由于異步方法缺少“await”關鍵字,主函數需等異步方法步驟3,4全部執(zhí)行結束后再繼續(xù)執(zhí)行步驟2,執(zhí)行順序完全和同步方法執(zhí)行順序一致;

并且異步方法會給出語法提示:缺少“await”關鍵字

怎么在ASP.Net中利用async+await實現異步編程

場景2:異步方法體內遇到await之后,立即將控制權轉到調用者手中

static void Main(string[] args)
    {
      Console.WriteLine("執(zhí)行前Main.....線程ID:" + Thread.CurrentThread.ManagedThreadId.ToString());//步驟①       GetResultAsync();
      Console.WriteLine("執(zhí)行結束Main....線程ID:" + Thread.CurrentThread.ManagedThreadId.ToString());//步驟②
      Console.ReadKey();
    }
    async static Task GetResultAsync()
    {
      Console.WriteLine("執(zhí)行前GetResult.....線程ID:" + Thread.CurrentThread.ManagedThreadId.ToString());//步驟③
      await Task.Delay(3000);
      Console.WriteLine("執(zhí)行結束GetResult.....線程ID:" + Thread.CurrentThread.ManagedThreadId.ToString());//步驟④
      return 10;
    }

執(zhí)行結果:步驟① ——>步驟③——>步驟②——>步驟④

怎么在ASP.Net中利用async+await實現異步編程

結果分析:

我們會發(fā)現,主函數Main調用異步方法GetResultAsync,在遇到異步方法中“await”關鍵字時

1)阻塞了當前異步方法并立即將控制權轉交給調用者主函數Main

2)主函數獲得控制權后繼續(xù)執(zhí)行方法體內步驟2,GetResultAsync方法則異步執(zhí)行(等待異步操作結束之后執(zhí)行步驟4)。

場景3:異步方法體內遇到await之后,立即將控制權轉到調用者手中,調用者需等待異步方法返回結果

static void Main(string[] args)
    {
      Console.WriteLine("執(zhí)行前Main.....線程ID:" + Thread.CurrentThread.ManagedThreadId.ToString());//步驟①
      Task res = GetResultAsync();
      Console.WriteLine("執(zhí)行結束Main....線程ID:" + Thread.CurrentThread.ManagedThreadId.ToString());//步驟②
      Console.WriteLine("執(zhí)行結果:" + res.Result + "....線程ID:" + Thread.CurrentThread.ManagedThreadId.ToString());//步驟③
      Console.ReadKey();
    }
    async static Task GetResultAsync()
    {
      Console.WriteLine("執(zhí)行前GetResult.....線程ID:" + Thread.CurrentThread.ManagedThreadId.ToString());//步驟④
      await Task.Delay(3000);
      Console.WriteLine("執(zhí)行結束GetResult.....線程ID:" + Thread.CurrentThread.ManagedThreadId.ToString());//步驟⑤
      return 10;
    }

執(zhí)行結果:步驟① ——>步驟④——>步驟②——>步驟⑤——>步驟③

怎么在ASP.Net中利用async+await實現異步編程

結果分析:

我們會發(fā)現,主函數Main調用異步方法GetResultAsync,在遇到異步方法中“await”關鍵字時

1)阻塞了當前異步方法并立即將控制權轉交給調用者主函數Main

2)主函數獲得控制權后繼續(xù)執(zhí)行方法體內步驟2和步驟3,GetResultAsync方法則異步執(zhí)行。

3)當主函數執(zhí)行步驟3時,由于步驟3需要打印異步方法的返回結果,故需要等待異步方法結束才能繼續(xù)。所以需先執(zhí)行步驟5,然后再繼續(xù)執(zhí)行步驟3。

最后,異步編程的時候我們通常會結合Task來使用

以上就是怎么在ASP.Net中利用async+await實現異步編程,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


分享標題:怎么在ASP.Net中利用async+await實現異步編程-創(chuàng)新互聯(lián)
本文路徑:http://weahome.cn/article/ppdsh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部