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 }
复制代码

 

posted @   .NET开发菜鸟  阅读(2295)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
点击右上角即可分享
微信分享提示