【发布时间】:2017-08-29 03:35:35
【问题描述】:
我是异步世界的新手。关于你的静态方法(来自https://stackoverflow.com/a/25733275/1596974):
static async Task<TResult[]> WhenAll<TResult>(IEnumerable<Task<TResult>> tasks, TimeSpan timeout)
{
var timeoutTask = Task.Delay(timeout).ContinueWith(_ => default(TResult));
var completedTasks =
(await Task.WhenAll(tasks.Select(task => Task.WhenAny(task, timeoutTask)))).
Where(task => task != timeoutTask);
return await Task.WhenAll(completedTasks);
}
我应该如何使用它来检索这些任务的结果? 为了清楚起见,我需要在这里实现的基本上是这样的:
- 对于每项任务,我都会致电多个运输提供商,以便从他们那里获得不同的运费。
- 将所有运输提供商的响应汇总到一个大的运费列表中。 有时,一个(或多个)运输提供商可能会倒闭。因此,我需要从成功完成的任务中检索运费并跳过失败的任务。 我希望我已经足够清楚了。
【问题讨论】:
标签: async-await