public MainViewModel(Func<Valute, ItemViewModel> itemFactory, IRepositoryCache<DailyCurs> dataSource, ICacheUpdater cacheUpdater)
 {
     _itemFactory = itemFactory;
     this.dataSource = dataSource;
     _cacheUpdater = cacheUpdater;
     this.dataSource.CashUpdated += CashUpdated;
     if (!cacheUpdater.IsEnabled)
         cacheUpdater.Start();
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="LockFreeObservableCache{TObject, TKey}"/> class.
        /// </summary>
        public LockFreeObservableCache()
        {
            _updater = new CacheUpdater <TObject, TKey>(_innerCache);

            _cleanUp = Disposable.Create(() =>
            {
                _changes.OnCompleted();
                _countChanged.OnCompleted();
            });
        }
 public MainViewModel(Func <Valute, ItemViewModel> itemFactory, IRepositoryCache <DailyCurs> dataSource, ICacheUpdater cacheUpdater)
 {
     _itemFactory                 = itemFactory;
     this.dataSource              = dataSource;
     _cacheUpdater                = cacheUpdater;
     this.dataSource.CashUpdated += CashUpdated;
     if (!cacheUpdater.IsEnabled)
     {
         cacheUpdater.Start();
     }
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="LockFreeObservableCache{TObject, TKey}"/> class.
        /// </summary>
        /// <param name="source">The source.</param>
        public LockFreeObservableCache(IObservable <IChangeSet <TObject, TKey> > source)
        {
            _updater = new CacheUpdater <TObject, TKey>(_innerCache);

            var loader = source.Select(changes =>
            {
                _innerCache.Clone(changes);
                return(_innerCache.CaptureChanges());
            }).SubscribeSafe(_changes);

            _cleanUp = Disposable.Create(() =>
            {
                loader.Dispose();
                _changes.OnCompleted();
                _countChanged.OnCompleted();
            });
        }