我有以下代码,并且不确定是否要一次运行一个任务,还是同时运行所有任务,然后等待所有任务完成。
Dictionary<TemporaryAdditionalData, Exception> rejected = new Dictionary<TemporaryAdditionalData, Exception>();
await Task.WhenAll(additionalData
.SelectMaybe(async adda =>
await this.InsertTemporallyAdditionalData(
guid, adda.Order, adda.ID, adda.Value, adda.IsMandatory
),
out rejected
).ToArray()
);
return rejected;
我认为
SelectMaybe
方法在这里不相关,它只是对LINQ Select
的扩展,它自动捕获异常并返回它们。1)这些任务将同时运行吗?
2)无论答案是1,如何编写相同的代码来完成相反的工作?
最佳答案
任务将并行执行。如果希望它们按顺序执行,则可以编写一个简单的循环,如下所示:
foreach (var adda in additionalData)
{
try
{
await this.InsertTemporallyAdditionalData(
guid, adda.Order, adda.ID, adda.Value, adda.IsMandatory
);
}
catch (Exception ex)
{
rejected[adda] = ex;
}
}
关于c# - 等待任务列表,一次一次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38924000/