public InProgress(ITransactionProgress t, params ITransactionProgress[] chains) { List <ITransactionProgress> ch = new List <ITransactionProgress> { t }; if (chains != null) { ch.AddRange(chains); } _chains = ch; }
private async Task <(object result, bool state)> InternalCheckForFinish(CancellationToken token = default(CancellationToken)) { (object result, bool done)r; do { ITransactionProgress p = _chains[_index]; r = await p.CheckForFinishAsync(_input, token).ConfigureAwait(false); if (r.done) { _index++; if (_chains.Count == _index) { return(r); } _input = r.result; } } while (r.done); return(r); }