{
var ourTasks = (Task[])tasks.Clone ();
AtomicBoolean trigger = new AtomicBoolean ();
- Task commonContinuation = new Task (null);
+ var commonContinuation = new TaskCompletionSource<object> ();
+ Action<Task> continuationFunc = t => commonContinuation.SetResult (null);
foreach (Task t in ourTasks) {
Task cont = new Task ((o) => continuationAction ((Task)o), t, cancellationToken, creationOptions, t);
t.ContinueWithCore (cont, continuationOptions, scheduler, trigger.TrySet);
- cont.ContinueWithCore (commonContinuation, TaskContinuationOptions.None, scheduler);
+ cont.ContinueWith (continuationFunc);
}
- return commonContinuation;
+ return commonContinuation.Task;
}
public Task ContinueWhenAny<TAntecedentResult> (Task<TAntecedentResult>[] tasks,