async和await


await和async是.NET Framework4.5框架、C#5.0語法里面出現的,await和async是語法糖。

注意:

1、async出現在方法的聲明里面,任何一個方法都可以增加async。

2、await放在Task前面,async和await是成對出現的,只有async是沒有意義的,只有await是報錯的。

只有async是沒有意義的。

只有await是報錯的。

3、await 只能放在task前面,不推薦void返回值,使用Task來代替。Task和Task<T>能夠使用await, Task.WhenAny, Task.WhenAll等方式組合使用。Async Void 不行

 1 private static async Task Return()
 2 {
 3             //主線程執行
 4             Console.WriteLine($"NoReturn Sleep before await,ThreadId={Thread.CurrentThread.ManagedThreadId}");
 5             TaskFactory taskFactory = new TaskFactory();
 6             Task task = taskFactory.StartNew(() =>
 7             {
 8                 Console.WriteLine($"NoReturn Sleep before,ThreadId={Thread.CurrentThread.ManagedThreadId}");
 9                 Thread.Sleep(3000);
10                 Console.WriteLine($"NoReturn Sleep after,ThreadId={Thread.CurrentThread.ManagedThreadId}");
11             });
12             //主線程到這里就返回了,執行主線程任務
13             await task;
14             //這個回調的線程是不確定的:可能是主線程  可能是子線程  也可能是其他線程
15             Console.WriteLine($"NoReturn Sleep after await,ThreadId={Thread.CurrentThread.ManagedThreadId}");
16 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM