Example #1
0
        public void Dispose()
        {
            if (disposed)
            {
                return;
            }
            lock (memoizedRequests)
            {
                if (disposed)
                {
                    return;
                }
                disposed = true;

                actionTaken.OnCompleted();
                flushThreadSubscription.Dispose();

                var waitOnAllInflight = memoizedRequests.CachedValues()
                                        .Select(x => x.Catch(Observable.Return(new byte[0])))
                                        .Merge(8)
                                        .Concat(Observable.Return(new byte[0]))
                                        .Aggregate(Unit.Default, (acc, x) => acc);

                waitOnAllInflight
                .SelectMany(FlushCacheIndex(true))
                .Multicast(shutdown)
                .PermaRef();
            }
        }