我有以下代码 -
await Task.WhenAll(TaskList /*List of Task objects*/);
await AnotherAwaitableMethod( );
这很好并且是必要的,因为AnotherAwaitableMethod
依赖于确保TaskList
内的任务在执行之前完成。
但是,我希望能够说出类似
的内容await Task.WhenAll(TaskList).ContinueWith( /*AnotherAwaitableMethod call?*/ );
这可能吗?我误解了Task.ContinueWith
的目的吗?
答案 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
来控制上下文时