示例#1
0
        public void ToObservable_DisposesEnumeratorOnCompletion()
        {
            var fail = false;
            var evt  = new ManualResetEvent(false);

            var ae = AsyncEnumerable.Create(
                _ => AsyncEnumerator.Create <int>(
                    () => new ValueTask <bool>(false),
                    () => { throw new InvalidOperationException(); },
                    () => { evt.Set(); return(default); }));
示例#2
0
        protected static IAsyncEnumerable <TValue> Throw <TValue>(Exception exception)
        {
            if (exception == null)
            {
                throw new ArgumentNullException(nameof(exception));
            }

#if NO_TASK_FROMEXCEPTION
            var tcs = new TaskCompletionSource <bool>();
            tcs.TrySetException(exception);
            var moveNextThrows = new ValueTask <bool>(tcs.Task);
#else
            var moveNextThrows = new ValueTask <bool>(Task.FromException <bool>(exception));
#endif

            return(AsyncEnumerable.Create(
                       _ => AsyncEnumerator.Create <TValue>(
                           () => moveNextThrows,
                           getCurrent: null,
                           disposeAsync: null)
                       ));
        }