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

使用Parallel.ForEachAsync报参数转换、委托参数不匹配错误如何解决

报错原因

两个报错的核心诱因是Parallel.ForEachAsync的回调委托参数不匹配,编译器无法找到对应重载,触发了连锁报错:

  • 你使用的ForEachAsync重载要求回调签名为Func<迭代元素类型, CancellationToken, ValueTask>,必须传入两个参数,你只写了1个OrderNumber参数,所以触发委托参数不匹配错误
  • 由于找不到正确重载,编译器尝试匹配其他重载,误将第二个参数ParallelOptions识别为需要转换为CancellationToken,因此抛出参数转换错误
    另外你定义ParallelOptions时对象初始化器语法有误,属性赋值后多写了分号。

修正方案

你需要修改两处核心内容:

  1. 修正ParallelOptions初始化的语法错误,去掉属性赋值后的多余分号
  2. 给回调委托添加第二个CancellationToken参数,匹配方法要求的签名
  3. 补充原方法要求的List<DisplayDto>返回值逻辑(当前代码无return语句会额外报错)

修正后的完整代码:

public async Task<List<DisplayDto>> GetData()
{
    var options = new ParallelOptions()
    {
        MaxDegreeOfParallelism = 20
    };

    await Parallel.ForEachAsync(result, options, async (OrderNumber, cancellationToken) => {
        // 业务逻辑写在这里,内部异步调用建议传入cancellationToken配合取消逻辑
    });

    // 补充你自己的返回值逻辑,示例:
    // return 你的结果集合;
}

内容的提问来源于stack exchange,提问作者Doctor Ford

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:36:04