C# .Net并行WaitAll()

C# .Net并行WaitAll(),c#,.net,parallel-processing,C#,.net,Parallel Processing,我的代码中有一种情况,我开始了未知数量的任务,并且希望使用Task.WaitAll() 大概是这样的: if (condition) { var task1 = Task.Factory.StartNew (call the web service1...); } if (condition) { var task2 = Task.Factory.StartNew (call the web service2...); } if (condition) {

我的代码中有一种情况,我开始了未知数量的任务,并且希望使用
Task.WaitAll()

大概是这样的:

if (condition) 
{ 
    var task1 = Task.Factory.StartNew (call the web service1...);
} 

if (condition) 
{ 
    var task2 = Task.Factory.StartNew (call the web service2...);
}

if (condition) 
{ 
    var task3 = Task.Factory.StartNew (call the web service3...); 
}

Task.WaitAll(task1, task2, task3);
问题是我不能说

Task.WaitAll(task1, task2 , task3)
因为我不知道哪一个会真正开始。
有什么解决方案吗?

创建实际启动任务的列表,然后执行
Task.WaitAll(taskList.ToArray())


通常,可以将任务列表保存到列表(任务)并使用 以下代码:

    Task.WaitAll(tasks.ToArray());

您可以使用任务列表并将任务动态添加到列表中:

var tasks = new List<Task>();

if (condition) 
{ 
    var task = Task.Factory.StartNew (call the web service1...);
    tasks.Add(task);
} 

if (condition) 
{ 
    var task2 = Task.Factory.StartNew (call the web service2...);
     tasks.Add(task2);
}

if (condition) { 
    var task3 = Task.Factory.StartNew (call the web service3...); 
    tasks.Add(task3);
}

Task.WaitAll(tasks.ToArray());
var tasks=newlist();
如果(条件)
{ 
var task=task.Factory.StartNew(调用web服务1…);
任务。添加(任务);
} 
如果(条件)
{ 
var task2=Task.Factory.StartNew(调用web服务2…);
任务。添加(任务2);
}
如果(条件){
var task3=Task.Factory.StartNew(调用web服务3…);
任务。添加(任务3);
}
Task.WaitAll(tasks.ToArray());
请参阅。您可以等待
任务的数组

var tasks = new List<Task>();

if (condition) 
{ 
    var task = Task.Factory.StartNew (call the web service1...);
    tasks.Add(task);
} 

if (condition) 
{ 
    var task2 = Task.Factory.StartNew (call the web service2...);
     tasks.Add(task2);
}

if (condition) { 
    var task3 = Task.Factory.StartNew (call the web service3...); 
    tasks.Add(task3);
}

Task.WaitAll(tasks.ToArray());