Я пытался использовать Task.Factory.ContinueWhenAll() несколько раз с намерением вызвать продолжение только тогда, когда все антецеденты выполняются до завершения без каких-либо ошибок или отмен. Это приводит к возникновению ArgumentOutOfRangeException вместе с сообщением,
Нельзя исключать определенные виды продолжения для продолжения нескольких задач. Имя параметра: continueOptions
Например, код
var first = Task.Factory.StartNew<MyResult>(
DoSomething,
firstInfo,
tokenSource.Token);
var second = Task.Factory.StartNew<MyResult>(
DoSomethingElse,
mystate,
tokenSource.Token);
var third = Task.Factory.ContinueWhenAll(
new[] { first, second },
DoSomethingNowThatFirstAndSecondAreDone,
tokenSource.Token,
TaskContinuationOptions.OnlyOnRanToCompletion, // not allowed!
TaskScheduler.FromCurrentSynchronizationContext());
неприемлемо для TPL. Есть ли способ сделать что-то подобное, используя какой-либо другой метод TPL?