如何在ASP.NET控制台应用中按指定流程并行运行多个方法?
.NET 并行编程实现指定流程方案
根据你的需求,我们可以用.NET的Task API来实现这个并行执行流程,核心逻辑是让Task1和Task2并行启动,各自内部按顺序执行方法,等两者全部完成后再执行Task3。
核心实现代码
using System; using System.Threading.Tasks; class Program { static void Main(string[] args) { // 启动Task1:内部顺序执行Fun3、Fun4 Task task1 = Task.Run(() => { Fun3(); Fun4(); }); // 启动Task2:内部顺序执行Fun1、Fun2、Fun5 Task task2 = Task.Run(() => { Fun1(); Fun2(); Fun5(); }); // 等待Task1和Task2全部完成后,执行Task3 Task.WhenAll(task1, task2).ContinueWith(_ => { Fun6(); Fun7(); Fun8(); }).Wait(); // 控制台应用需等待所有任务完成,避免程序提前退出 } // 模拟你的8个业务方法 static void Fun1() => Console.WriteLine("执行Fun1"); static void Fun2() => Console.WriteLine("执行Fun2"); static void Fun3() => Console.WriteLine("执行Fun3"); static void Fun4() => Console.WriteLine("执行Fun4"); static void Fun5() => Console.WriteLine("执行Fun5"); static void Fun6() => Console.WriteLine("执行Fun6"); static void Fun7() => Console.WriteLine("执行Fun7"); static void Fun8() => Console.WriteLine("执行Fun8"); }
关键逻辑说明
Task.Run():将委托逻辑放入线程池执行,实现Task1和Task2的并行启动,对应Java中异步任务的创建逻辑。- 单个Task内部的方法调用是顺序执行的,比如Task1会先完成
Fun3()再执行Fun4(),完全匹配你的流程要求。 Task.WhenAll(task1, task2):阻塞等待两个并行任务全部完成,确保Task3仅在前置任务结束后启动。ContinueWith():在前置任务完成后触发Task3的执行,内部同样按顺序调用Fun6()、Fun7()、Fun8()。- 末尾的
.Wait():控制台应用的Main方法为同步入口,需等待所有异步任务执行完毕,避免程序提前终止。
内容的提问来源于stack exchange,提问作者Suprateem Bose
相关产品推荐
相关产品推荐

