日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# async/await使用举例

發布時間:2025/3/8 C# 24 如意码农
生活随笔 收集整理的這篇文章主要介紹了 C# async/await使用举例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、async/await幾點總結

  a、被async標記的方法,返回值類型只能為voidTaskTask<T>。

  b、被async標記的方法,內部可以有await修飾符,表明內部邏輯某處有異步執行方法。

  c、被async標記的方法,內部可以沒有await修飾符,所有邏輯將同步執行。

  d、task任務執行創建的線程為后臺線程,主線如果不Task.result獲取結果,主線程結束,異步任務未完成也結束。

  f、await關鍵字:方法要被async修飾,才能在方法內部使用await,await后面必須是一個task或返回task的方法,標記了await,就說明后面的操作是一個異步操作。

2、應用實例

 1   static void Main(string[] args)
2 {
3 Console.WriteLine("主線程開始");
4 Console.WriteLine("主線程ID:" + Thread.CurrentThread.ManagedThreadId);
5 var task = GetLengthAsync();
6 Console.WriteLine("主線程繼續");
7 var timer = new Stopwatch();
8 timer.Start();
9 Console.WriteLine("task的返回值是" + task.Result);
10 timer.Stop();
11 Console.WriteLine("耗時:" + timer.Elapsed.TotalSeconds + "秒"); //顯示時間
12 Console.WriteLine("主線程ID:" + Thread.CurrentThread.ManagedThreadId);
13 Console.WriteLine("主線程結束");
14 }
15
16 private static async Task<int> GetLengthAsync()
17 {
18 Console.WriteLine("GetLengthAsync()開始");
19 Console.WriteLine("GetLengthAsync()線程ID:" + Thread.CurrentThread.ManagedThreadId);
20 var str = await GetStringAsync();
21 Console.WriteLine("GetLengthAsync()線程ID:" + Thread.CurrentThread.ManagedThreadId);
22 Console.WriteLine("GetLengthAsync()執行完畢");
23 return str.Length;
24
25 }
26
27 private static Task<string> GetStringAsync()
28 {
29 Console.WriteLine("GetStringAsync()開始");
30 Console.WriteLine("GetStringAsync()線程ID:" + Thread.CurrentThread.ManagedThreadId);
31 Console.WriteLine("GetStringAsync()結束");
32 return Task.Run(() =>
33 {
34 Task.Delay(5000);
35 Console.WriteLine("異步任務開始執行");
36 Console.WriteLine("異步任務開始執行線程ID:" + Thread.CurrentThread.ManagedThreadId);
37 Console.WriteLine("異步任務耗時10s:");
38 Thread.Sleep(10000);
39 Console.WriteLine("異步任務執行完畢");
40 return "異步任務執行結果";
41 });
42
43 }

運行結果顯示。

注釋調9行結果顯示。表明,主線程結束,異步任務未完成也結束。

部分內容參考:https://www.cnblogs.com/sheng-jie/p/6471986.html

總結

以上是生活随笔為你收集整理的C# async/await使用举例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。