C# 对于任务,continueWith和WhenAll()、何时继续、何时完成任务或何时完成ConitueWith?
我有几个任务,每个任务都有一个使用任务结果的C# 对于任务,continueWith和WhenAll()、何时继续、何时完成任务或何时完成ConitueWith?,c#,asynchronous,task-parallel-library,C#,Asynchronous,Task Parallel Library,我有几个任务,每个任务都有一个使用任务结果的连续体。诸如此类: Task myTask01 = myMethod01Async().ContinueWith((a) => //do somenthing with a.result); Task myTask02 = myMethod02Async().ContinueWith((a) => //do somenthing with a.result); Task.WhenAll(myTask01, myTask02); 我知
连续体。诸如此类:
Task myTask01 = myMethod01Async().ContinueWith((a) => //do somenthing with
a.result);
Task myTask02 = myMethod02Async().ContinueWith((a) => //do somenthing with a.result);
Task.WhenAll(myTask01, myTask02);
我知道WhenAll会一直等到参数中的所有任务完成。但在这种情况下,我有一个ContinueWith
,我不知道是等到所有ContinueWith
都完成,还是在Task01
和Task02
完成时继续,所以代码继续,尽管ContinueWith
代码仍在运行。返回一个新任务,因此使用task。实际上,您正在等待从ContinueWith
返回的任务,而不是从myMethod01Async
和myMethod02Async
返回的任务
所以是的,任务。WhenAll将等待ContinueWith
中的代码完成。“我不知道WhenAll是等待所有ContinueWith完成,还是在Task01和Task02完成时继续”——任务Task01
和Task02
正是ContinueWith()完成时的表示。你的问题没有多大意义,因为你暗示他们是不同的,而事实上他们是一样的。当然,如果您刚刚阅读了文档,甚至尝试了一个示例,您就能够回答您自己的问题。那么我不明白为什么在我的示例中它不能像这样工作: