public IAsyncEnumerator <TResult> GetAsyncEnumerator()
        {
            var subject = new ReplayAsyncEnumerable <TSource>();
            IAsyncEnumerable <TResult> result;

            try
            {
                result = _func(subject);
            }
            catch (Exception ex)
            {
                return(new Error <TResult> .ErrorEnumerator(ex));
            }
            var en = new MulticastEnumerator <TSource, TResult>(_source.GetAsyncEnumerator(), subject, result.GetAsyncEnumerator());

            return(en);
        }
Exemple #2
0
        public IAsyncEnumerator <TResult> GetAsyncEnumerator(CancellationToken cancellationToken)
        {
            var subject = new MulticastAsyncEnumerable <TSource>();
            IAsyncEnumerable <TResult> result;

            try
            {
                result = _func(subject);
            }
            catch (Exception ex)
            {
                return(new Error <TResult> .ErrorEnumerator(ex));
            }
            var cts = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken);
            var en  = new MulticastEnumerator <TSource, TResult>(_source.GetAsyncEnumerator(cts.Token), subject, result.GetAsyncEnumerator(cancellationToken), cts);

            return(en);
        }