我怎么能等待Task.WhenAll(...)。继续(AnotherAwaitable)?

时间:2015-07-23 02:32:36

标签: c# async-await task

我有以下代码 -

await Task.WhenAll(TaskList /*List of Task objects*/);
await AnotherAwaitableMethod( );

这很好并且是必要的,因为AnotherAwaitableMethod依赖于确保TaskList内的任务在执行之前完成。

但是,我希望能够说出类似

的内容
await Task.WhenAll(TaskList).ContinueWith( /*AnotherAwaitableMethod call?*/ );

这可能吗?我误解了Task.ContinueWith的目的吗?

1 个答案:

答案 0 :(得分:14)

  await Task.WhenAll(TaskList /*List of Task objects*/);
  await AnotherAwaitableMethod( );

 await Task.WhenAll(TaskList /*List of Task objects*/).ContinueWith(_ => {AnotherAwaitableMethod();}).Unwrap();

几乎完全相同。但是,如果你使用overloads,使用ContinueWith会给你很大的移动能力。 使用ContinueWith的主要原因之一是,您希望根据第一个任务的结果有条件地执行AnotherAwaitableMethod,或者当您想使用TaskContinuationOptions

来控制上下文时