public IPromise JoinParallel(IEnumerable <IPromise> promisesAsEum) { var promises = promisesAsEum.ToList(); var result = new ManualPromise(this, _taskFactory); result.Start(); foreach (var promise in promises) { promise.Then(() => { #if DEBUG var states = promises.Select(x => x.State).ToList(); #endif if (promises.All(x => x.State == AsyncState.Completed)) { result.SetCompleted(); } }).Finally(error => { if (promise.State == AsyncState.Failed) { result.SetFailed(error); } }); } return(result); }
public IPromise StartNew() { var ret = new ManualPromise(this, _taskFactory); ret.Start(); ret.SetCompleted(); return(ret.Immediately); }
public IPromise <T> StartNew <T>(T value) { var ret = new ManualPromise <T>(this, _taskFactory); ret.Start(); ret.SetResult(value); ret.SetCompleted(); return(ret.Immediately); }