【发布时间】:2016-08-13 02:21:34
【问题描述】:
我有以下代码,我不确定它是一次运行一个任务,还是同时运行所有任务,然后等待所有任务完成。
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 的答案是什么,我如何编写相同的代码来做相反的事情?
【问题讨论】:
-
运行代码并自己找出它在做什么。这是一个足够简单的测试。
-
@Servy 我会尝试,我可能必须想出一个更简单的相同逻辑版本,因为我现在没有资源来测试该特定实现。
-
那将是测试该行为的最佳方法,是的。
-
相反的方式 = 第一次运行调用所有方法并将它们存储为任务第二次运行等待所有任务
标签: c# async-await