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

如何在.NET后台服务中并行执行多个异步任务?

并行执行异步任务的解决方案

当前你的代码中,每次调用await都会阻塞直到前一个任务完成,导致三个任务串行执行。要让它们同时启动并并行运行,只需调整任务的启动和等待方式:

修改Worker.cs的ExecuteAsync方法

核心是先启动所有任务,再用Task.WhenAll等待全部完成:

protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
    while (!stoppingToken.IsCancellationRequested)
    {
        logger.LogInformation("StatusWorker running at: {time}", DateTimeOffset.Now);
        
        // 1. 启动所有任务(此时三个任务会同时开始执行)
        var task1 = statusProcess.GetSystemStatus();
        var task2 = statusProcess.GetProcessesWithError();
        var task3 = statusProcess.GetNumberofProcessesInLastDay();
        
        // 2. 等待所有任务完成
        await Task.WhenAll(task1, task2, task3);
    }
}

关键说明

  • 直接调用statusProcess.GetXXX()而不立即await,会让任务立即开始执行,而非等待前一个任务完成
  • Task.WhenAll会等待传入的所有Task对象都完成后,才继续执行后续代码
  • 如果后续需要处理每个任务的返回值(比如方法有返回类型),可以在WhenAll后分别获取对应任务的结果

内容的提问来源于stack exchange,提问作者Paul Viorel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 10:05:21