c# - 让 Task.WhenAny 在一项特定任务结束时返回

标签 c# task task-parallel-library

如何并行运行 2 个任务,并在一个特定任务结束时收到通知(在我的例子中是列表中的第一个任务)

目前我正在使用此代码:

await Task.WhenAny(A.Play(cancel), B.Play(cancel));

代码应该在 A.Play(cancel) 结束时返回,但在 b.Play(cancel) 结束时不返回。

WhenAny 不起作用,因为 B 可能会先于 A 结束。 WhenAll 不起作用,因为 B 可能是一个无尽的任务。

最佳答案

我相信这会达到你想要的效果。这些任务将并行运行,但您首先等待 aTask,因此仅当 aTask 返回时它才返回。然后,您可以包含单独的逻辑来等待 bTask。

Task aTask = A.Play(cancel);
Task bTask = B.Play(cancel);

// will return only when A is complete. 
await aTask;

// await bTask seperately. 

关于c# - 让 Task.WhenAny 在一项特定任务结束时返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57484473/

相关文章:

c# - 如何用EF4和Mysql比较小数

c# - 如何将数据集中的表绑定(bind)到 C# 和 XAML 中的 WPF 数据网格

c# - 在扩展方法中使用 await 运算符时是否需要考虑可能的重入编码问题?

java - Ant -e 仅用于 java 任务

c# - WebAPI 异步方法错误

c# - Task.FromResult() 与 Task.Run()

c# - 在 mssql 中存储整数列表的最佳选择

c# - 为什么属性隐藏同名的继承函数?

vba - 将 Outlook 电子邮件回复作为任务收集并填充到 Excel 电子表格中

task - JavaFX-等待任务完成