gpt4 book ai didi

c# - 任务并行库 ArgumentException

转载 作者:太空宇宙 更新时间:2023-11-03 21:58:23 24 4
gpt4 key购买 nike

我正在尝试使用任务并行库逐个单元地构建矩阵。

我有以下代码可以执行此操作:

List<Campaign> campaigns = GetHomeCampaigns();
Dictionary<int, string> sellers = GetHomeSellers();

int numTasks = campaigns.Count*sellers.Count;
Task<MatrixCell<string>>[] statusTasks = new Task<MatrixCell<string>>[numTasks];

int count = 0;
for(int i = 0; i < campaigns.Count -1;i++)
{
for(int j = 0; j < sellers.Count -1;j++)
{
Func<MatrixCell<string>> getStatus = () => GetStatus(campaigns[i].CampaignID, sellers.ElementAt(j).Key);
statusTasks[count] = Task.Factory.StartNew(getStatus);
count++;
}
}
Task.WaitAll(statusTasks);

我试图做的是并行处理和确定每个单元格,然后在它们全部完成后,使用与此示例无关的附加代码逐行组装矩阵。

我现在面临的问题是下面这行

Task.WaitAll(statusTasks)

我收到以下 ArgumentException

The tasks array included at least one null element.
Parameter name: tasks

我检查了数组,它显示所有项目都存在于 statusTasks 中。

不太确定还有什么地方可以看。

谢谢,

最佳答案

当您使用 for在基于 0 的索引语言中循环,你不需要做 < .Count - 1 .那应该是:

for (int i = 0; i < campaigns.Count; i++)

因为它是<而不是 <= , 它已经确保最后一项将是 campaigns[campaigns.Count - 1] .

关于c# - 任务并行库 ArgumentException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11267895/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com