您正在寻找的是Task.WhenAll。您应该创建与要从中获取数据的多个位置一样多的任务,然后以这种方法提供它们。
详细介绍@Christos接受的答案:
Task.WhenAll似乎与Promise.all的替代品差不多。实际上,我发现它比我最初想象的要近。这是一个使用JavaScript Promise.all
实现的示例,您可能想在C#中复制它:
const [ resolvedPromiseOne, resolvedPromiseTwo ] = await Promise.all([ taskOne, taskTwo ]);
在C#中,您可以使用Task.WhenAll
做非常相似的事情(假设它们返回相同的类型)。
var taskList = new[]
{
SomeTask(),
AnotherTask()
};
var completedTasks = await Task.WhenAll(taskList);
// then access them like you would any array
var someTask = completedTasks[0];
var anotherTask = completedTasks[1];
// or just iterate over the array
foreach (var task in completedTasks)
{
doSomething(task);
}
这假设它们都在async
方法/函数中。