我想用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);
}
答案 0 :(得分:1)
假设taskArray
是List<Task>
,您可以使用:
Task.WaitAll(taskArray.ToArray());