public IAsyncEnumerator <TInput>[] GetFlows() { int i = 0; var ret = new IAsyncEnumerator <TInput> [FlowStarters.Count]; foreach (IAsyncEnumerator <TInput> flow in OpenFlows) { ret[i] = flow is AsyncEnumerator <TInput> inst && inst.IsEnumerationComplete ? FlowStarters.ElementAt(i)() : OpenFlows.ElementAt(i); i++; } return(ret); }
public IAsyncEnumerator <TInput>[] GetFlows() { var ret = new IAsyncEnumerator <TInput> [FlowStarters.Count]; for (var i = 0; i < ret.Length; ++i) { OpenFlows.TryTake(out var flow); if (flow.IsEnumerationComplete) { var e = new CappedAsyncEnumerator <TInput>(FlowStarters.ElementAt(i)().GetAsyncEnumerator()); OpenFlows.TryAdd(e); ret[i] = e; continue; } OpenFlows.TryAdd(flow); ret[i] = flow; } return(ret); }