我怎样才能等待链中的最后一个任务

本文关键字:最后一个 任务 等待 | 更新日期: 2023-09-27 18:35:38

在任务上调用 Wait() 只会等到它完成,而不是等到链中的最后一个延续完成。

如何等待链中的最后一个任务? 我会简单地将整个链放在一个数组中并在其上 WaitAll,但 ContinueWith 需要一个委托,而不是我可以保留引用的任务。

我怎样才能等待链中的最后一个任务

您可以使用

Task.WaitAll(),它接受一系列任务。

http://msdn.microsoft.com/en-us/library/dd270695(v=vs.110).aspx

编辑:在这种情况下,您可以使用TaskFactory.ContinueWhenAll

方法在任务数组中的所有任务都已完成时执行继续操作委托,而不考虑其完成状态。

下面是一个伪代码示例:

Tasks[] tasks = GetTasks();
var finalTask = Task.Factory.ContinueWhenAll(tasks, completedTasks => {...}); 
finalTask.Wait();

MSDN 上有一个非伪代码示例。