Здравствуйте, AK107, Вы писали:
S>> WhenAll() добавляет себя как ContinueWith к задачам-аргументам, поэтому WhenAll выполнится не раньше, чем запустятся предыдущие добавленные продолжения.
AK>да, оно! поизучавши исходники net.core пришел к тому же 
Вообще, закладываться на такое поведение опасно, т.к. это просто побочный эффект реализации и никто не запрещает .WhenAll добавляться в начало списка продолжений. Лично я бы переписал код на await-ах или сохранял бы в список запущенные задачи. Все прочие варианты (включая AttachedToParent) ненадёжны.
P.S. исходники удобнее смотреть на
https://referencesource.microsoft.com/ или
https://source.dot.net/ .