咨询Task.WhenAny在多任务提前完成时的返回值规则
Task.WhenAny 多任务已完成时的返回规则
Task.WhenAny的返回值是单个Task对象,绝不会返回已完成任务的列表。- 当执行
await Task.WhenAny(task1,task2,task3)前已有多个任务完成时,方法会按照传入参数的顺序,返回第一个被检测到已完成的任务,这是确定的行为,不存在随机性。 - 核心逻辑:调用
WhenAny时,会按参数列表的顺序逐个检查任务状态,第一个处于完成状态的任务会被立即返回,与任务实际完成的时间先后无关。
举个实例:
假设task2实际完成时间早于task1,但调用WhenAny时传入的顺序是task1, task2, task3,此时因为task1已完成,方法会直接返回task1,而非更早完成的task2;如果传入顺序是task2, task1, task3,则会返回task2。
内容的提问来源于stack exchange,提问作者blue_birb
相关产品推荐
相关产品推荐

