c# - 等待任务列表

标签 c# .net task-parallel-library async-await

我正在尝试做这样的事情:

foreach (var o in ObjectList) 
{ 
    CalculateIfNeedToMakeTaskForO(o);

    if (yes) 
        TaskList.Add(OTaskAsync());
}

现在我想等待所有这些任务完成。 除了做

foreach(var o in ObjectList)
{
    Result.Add("result for O is: "+await OTaskAsync());
}

有什么我可以做的吗? (更好,更优雅,更“正确”)

最佳答案

你正在寻找Task.WhenAll:

var tasks = ObjectList
    .Where(o => CalculateIfNeedToMakeTaskForO(o))
    .Select(o => OTaskAsync(o))
    .ToArray();
var results = await Task.WhenAll(tasks);
var combinedResults = results.Select(r => "result for O is: " + r);

关于c# - 等待任务列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17621632/

相关文章:

c# - 如何隐藏 C# .exe 项目中的所有 dll 文件

C# OPC 客户端获取服务器列表失败

C# 外部库使用静态成员防止多线程

.net - 是否可以编写破坏构建的自定义属性(如 System.ObsoleteAttribute)?

c# - ConfigureAwait 是否只影响非线程池线程?

c# - 在 C++ 和 C# 之间进行通信的最快方式

c# - Microsoft.Web.Administration 内存泄漏

task-parallel-library - I/O 性能 - 异步 vs TPL vs Dataflow vs RX

c# - 我应该将任务封装在一个类中吗?

c# - 将 Ninject 与 ASP.NET MVC 和服务层结合使用