在进行一些工作之前,我需要从多个站点获取数据,每个站点都有超时限制。我的代码如下所示。此解决方案正确还是会导致性能问题?
protected List<Source> Sources { get; set; }
private async Task<List<SomeData>> GetSomeData()
{
var result = new ConcurrentBag<SomeData>();
var tasks = new List<Task>();
foreach (var source in Sources)
{
tasks.Add(await Task.WhenAny(
Task.Run(() =>
{
result.Add(_dataFactory.GetData(source));
}),
Task.Delay(Timeout))
);
}
await Task.WhenAll(tasks);
return result.ToList();
}