考虑以下代码:
attempt = 0;
for (int counter = 0; counter < 8; counter++)
{
if (attempt < totalitems)
{
Tasklist<output>.Add(Task.Run(() =>
{
return someasynctask(inputList[attempt]);
}));
}
else
{
break;
}
attempt++;
}
await Task.WhenAll(Tasklist).ConfigureAwait(false);
Run Code Online (Sandbox Code Playgroud)
例如,我想要 8 个并发任务,每个任务同时处理不同的输入,最后在所有任务完成后检查结果。因为我没有Task.Run() attempt在任务开始之前等待增加的完成,并且当任务开始时, 中可能有一些项目inputList没有被处理或处理了两次或更多次(因为attempt价值的不确定性。
怎么做?