完成任务后使用任务

时间:2013-07-17 15:06:13

标签: c# parallel-processing task-parallel-library scheduled-tasks task

enter image description here我对Task.Factory.ContinueWhenAll方法有疑问

这是我的代码:

private void CheckNewResult(){
    Task.Factory.ContinueWhenAll(TasksList.toArray(),CompleteTasks);
}
private void CompleteTasks(Tasks[] tasks)
{
 if(tasks.Any(t => t.Status == (TaskStatus.RantoCompletion)))
 {
    //do something
 }
}

我的问题是实际调用完整任务方法的时间是什么时候?是在所有任务完成了他们的请求之后吗?

2 个答案:

答案 0 :(得分:1)

当你这样做时

 Task.Factory.ContinueWhenAll(TasksList.toArray(),CompleteTasks);

文档说明

  

创建一个继续任务,该任务将在完成一组提供的任务后启动。处于完成状态或任何其他状态。

一种可能的方法是测试任务的状态,并且只有在状态不是故障或取消时才尝试执行继续。所以你需要这样做。

 if(tasks.Any(t => t.Status == (TaskStatus.RantoCompletion)))

答案 1 :(得分:0)

根据documentation

  

创建一个将在完成时启动的继续任务   一组提供的任务。

是的,当所有任务完成时调用它。