Example #1
0
        public async Task EnsureActualAsync()
        {
            if (_busy)
            {
                return;
            }
            _busy = true;

            try {
                if (_readerFunc != null)
                {
                    using (var reader = _readerFunc()) {
                        if (!_storage.IsActual(reader))
                        {
                            IsLoading = true;
                            if (_preparationFunc != null)
                            {
                                await _preparationFunc();
                            }

                            _listChangeId = _changeId;
                            _list         = await _storage.UpdateCachedAsync(reader);

                            _lastLoaded = DateTime.Now;
                            OnPropertyChanged(nameof(EntriesCount));
                            OnPropertyChanged(nameof(LastModified));
                            IsLoading = false;
                            return;
                        }
                    }
                }

                _listChangeId = _changeId;
                _list         = _storage.GetCached().ToList();
                _lastLoaded   = DateTime.Now;
                OnPropertyChanged(nameof(EntriesCount));
            } finally {
                _busy = false;
            }
        }