0

在此处输入图像描述我对 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
 }
}

我的问题是 Complete Tasks 方法何时实际调用?是在所有任务都完成了他们的请求之后吗?

4

2 回答 2

1

当你这样做时

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

文件指出

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

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

 if(tasks.Any(t => t.Status == (TaskStatus.RantoCompletion)))
于 2013-07-17T15:20:37.827 回答
0

根据文档

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

是的,它会在所有任务完成后调用。

于 2013-07-17T15:08:34.253 回答