任务列表 - 开始然后等待

时间:2018-05-01 22:08:29

标签: c# .net task

我想用List做第一个方法对数组的作用。

情况是不知道前面有多少个任务。我不想在开始任务之前填写List,因为它需要一段时间才能填满列表。

public void TaskArray()
{
    ConcurrentBag<int> cb = new ConcurrentBag<int>();
    Task[] taskArray = new Task[10];
    for (int i = 0; i < 100; i++)
    {
        taskArray[i] = Task.Factory.StartNew((Object obj) => {

            Console.WriteLine("Task #{0} created at {1} on thread #{2}.",
                                i, Thread.CurrentThread.ManagedThreadId);
        },
                                                i);
    }
    Task.WaitAll(taskArray);
}

这有语法错误。 无法从system.generic.task.list转换为system.threading.task.task

public void TaskList()
{
    ConcurrentBag<int> cb = new ConcurrentBag<int>();
    List<Task> taskArray = new List<Task>;
    for (int i = 0; i < 100; i++)
    {
        taskArray.Add(Task.Factory.StartNew((Object obj) => {
            cb.Add(i);
            Console.WriteLine("Task #{0} created at {1} on thread #{2}.",
                                i, Thread.CurrentThread.ManagedThreadId);
        },
                                                i));
    }
    Task.WaitAll(taskArray);
}

1 个答案:

答案 0 :(得分:1)

假设taskArrayList<Task>,您可以使用:

Task.WaitAll(taskArray.ToArray());