代码之家  ›  专栏  ›  技术社区  ›  paparazzo

任务列表-开始,然后等待全部

  •  -1
  • paparazzo  · 技术社区  · 7 年前

    我想用List做第一个方法对array做什么。

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

    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);
    }
    

    这有语法错误。 无法从系统转换。通用的任务列表到系统。穿线。任务任务

    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 回复  |  直到 7 年前
        1
  •  1
  •   Federico Dipuma    7 年前

    假设 taskArray 是一个 List<Task> 您可以只使用:

    Task.WaitAll(taskArray.ToArray());