Пример #1
0
        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);
        }
Пример #2
0
        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);
        }