如何并行运行 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/