コード例 #1
0
        public static AwaitableAsyncSubject <TSource> GetAwaiter <TSource>(this IObservable <TSource> source)
        {
            var s = new AwaitableAsyncSubject <TSource>();

            source.SubscribeSafe(s);
            return(s);
        }
コード例 #2
0
        public static AwaitableAsyncSubject <TSource> GetAwaiter <TSource>(this IObservable <TSource> source)
        {
            Contract.Requires(source != null);
            Contract.Ensures(Contract.Result <AwaitableAsyncSubject <TSource> >() != null);

            var s = new AwaitableAsyncSubject <TSource>();
            var d = source.SubscribeSafe(s);

            return(s);
        }
コード例 #3
0
        public static AwaitableAsyncSubject <TSource> RunAsync <TSource>(this IConnectableObservable <TSource> source, CancellationToken cancellationToken)
        {
            var s = new AwaitableAsyncSubject <TSource>();

            var cancel = new Action(() => s.OnError(new OperationCanceledException()));

            if (cancellationToken.IsCancellationRequested)
            {
                cancel();
                return(s);
            }

            var d = new CompositeDisposable(source.SubscribeSafe(s), source.Connect());

            cancellationToken.Register(d.Dispose);
            cancellationToken.Register(cancel);

            return(s);
        }