You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 04:55:24