Task 类和 Task<TResult> 类提供多种方法,这些方法能够帮助你组合多个任务以实现常见模式,你可以等待多个 Task 和 Task<TResult> 对象在一个方法调用中完成。
Task.WhenAny
Task.WhenAny 方法异步等待多个 Task 或 Task<TResult> 对象中的一个完成, WhenAny 方法在下列情境中尤其有用。
-
冗余运算。 请考虑可以用多种方式执行的算法或运算。 你可使用 WhenAny 方法来选择先完成的运算,然后取消剩余的运算。
-
交叉运算。 你可启动必须全部完成的多项运算,并使用 WhenAny 方法在每项运算完成时处理结果。 在一项运算完成后,可以启动一个或多个其他任务。
-
受限制的运算。 你可使用 WhenAny 方法通过限制并发运算的数量来扩展前面的情境。
-
过期的运算。 你可使用 WhenAny 方法在一个或多个任务与特定时间后完成的任务(例如 Delay 方法返回的任务)间进行选择。