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