.NET Core 的异步编程-只讲干货(async,await,Task)
namespace ConsoleApp1 { class Program { static void Main( string [] args) { Console.WriteLine(ThreadID() + " =》主线程启动" ); MethodAsync(); //调用异步方法 Console.WriteLine(ThreadID() + " =》主线程继续执行" ); Console.WriteLine(ThreadID() + " =》主线程结束 END" ); Console.Read(); } static async void MethodAsync() { Console.WriteLine(ThreadID() + " =》MethodAsync方法开始执行" ); string str = await DoSomething(); //等待GetString执行完成 Console.WriteLine(ThreadID() + " =》MethodAsync方法执行结束" ); } static Task< string > DoSomething() { Console.WriteLine(ThreadID() + " =》DoSomething方法开始执行" ); return Task< string >.Run(() => { Thread.Sleep(4000); //导步线程 处理耗时任务 Console.WriteLine(ThreadID() + " =》DoSomething方法结束执行" ); return "GetString的返回值" ; }); } static string ThreadID() { return Thread.CurrentThread.ManagedThreadId.ToString(); } } } |
1 =》主线程启动
1 =》MethodAsync方法开始执行
1 =》DoSomething方法开始执行
1 =》主线程继续执行
1 =》主线程结束 END
7 =》DoSomething方法结束执行
public class AsyncAwaitTest { public void Start() { Console.WriteLine($"aaa,线程Id:{Thread.CurrentThread.ManagedThreadId}"); AsyncMethod(); Console.WriteLine($"eee,线程Id:{Thread.CurrentThread.ManagedThreadId}"); Console.ReadLine(); } public async Task<bool> AsyncMethod() { Console.WriteLine($"bbb,线程Id:{Thread.CurrentThread.ManagedThreadId}"); await Task.Run(() => { Thread.Sleep(500); Console.WriteLine($"ccc,线程Id:{Thread.CurrentThread.ManagedThreadId}"); }); Console.WriteLine($"ddd,线程Id:{Thread.CurrentThread.ManagedThreadId}"); return true; } }
aaa,线程Id:1
bbb,线程Id:1
eee,线程Id:1
ccc,线程Id:7
ddd,线程Id:7
(21条消息) .Net Core中无处不在的Async/Await是如何提升性能的?_.net core async await_BINGHANYULENG的博客-CSDN博客
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构