异步多线程案例
2022-02-25 14:18 Evan.Pei 阅读(31) 评论(0) 编辑 收藏 举报1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | class Program { static void Main( string [] args) { Console.WriteLine($ "Task 学习开始----{Thread.CurrentThread.ManagedThreadId}" ); List<Task> ta1 = new List<Task>(); fun1( out ta1); //得到一个异步多线程集合 TaskFactory tf = new TaskFactory(); //现场工厂 管理线程 //等集合中的线程执行完,在从线程池中拿一个线程执行新方法 tf.ContinueWhenAll(ta1.ToArray(), t => {Console.WriteLine($ "Task 学习结束----{Thread.CurrentThread.ManagedThreadId}" ); }); } public static void fun1( out List<Task> tlist) { List<Task> tasklist = new List<Task>(); //lamdba表达式直接写方法体 tasklist.Add(Task.Run(() => {Console.WriteLine($ "======学习第1个线程======{Thread.CurrentThread.ManagedThreadId}" ); })); tasklist.Add(Task.Run(() => {Console.WriteLine($ "======学习第2个线程======{Thread.CurrentThread.ManagedThreadId}" ); })); tasklist.Add(Task.Run(() => {Console.WriteLine($ "======学习第3个线程======{Thread.CurrentThread.ManagedThreadId}" ); })); tasklist.Add(Task.Run(() => { var result = fun2( "hello!" ); //调用有参数和返回值的方法 Console.WriteLine(result.ToString()); })); tlist = tasklist; //返回值 } //有参数的方法 public static string fun2( string a) { Console.WriteLine(a+ "调用有参数返回值的方法!" + Thread.CurrentThread.ManagedThreadId); return a; } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构