Beispiel #1
0
        public QueryHistoryProvider()
        {
            _historySourceList = new SourceList <RawQueryHistory>();

            var counter = _historySourceList.CountChanged.Subscribe(i => IsEmpty = i == 0);

            var limiter = _historySourceList.LimitSizeTo(100).Subscribe();

            _historySourceList.AddRange(LoadFileData());

            var sharedList = _historySourceList
                             .Connect()
                             .DeferUntilLoaded()
                             .Sort(SortExpressionComparer <RawQueryHistory> .Descending(t => t.LastRunAt))
                             .ObserveOnDispatcher()
                             .Bind(out _queryHistories)
                             .Subscribe();

            var disposable = _queryHistories
                             .ObserveCollectionChanges()
                             .Throttle(TimeSpan.FromSeconds(2))
                             .Subscribe(pattern => { SaveFileData(_queryHistories); });

            _compositeDisposable = new CompositeDisposable(counter, limiter, sharedList, disposable);
        }