等待任务清单 [英] Await for list of Tasks

查看:88
本文介绍了等待任务清单的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm trying to do something like this:

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

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

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

Now I would like to wait for all these tasks to complete. Besides doing

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

我能做些什么吗? (更好,更优雅,更正确")

Is there anything I could do? (better, more elegant, more "correct")

推荐答案

您正在寻找 编辑:由于WaitAll仅接受一个任务数组(或以可变参数数组形式的Task列表),因此必须转换您的Enumerable.如果需要扩展方法,可以执行以下操作:

Since WaitAll only takes an array of task (or a list of Task in the form of a variable argument array), you have to convert your Enumerable. If you want an extension method, you can do something like this:

public static void WaitAll(this IEnumerable<Task> tasks) 
{
    Task.WaitAll(tasks.ToArray());
}      

TaskList.WaitAll();

但这实际上只是语法糖.

But that's really only syntactic sugar.

这篇关于等待任务清单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆