/// <summary> /// Implements the updating of the <see cref="Rows"/> collection. /// </summary> private void Update() { _willUpdate = false; long lastSequence = Database.GetLastSequenceNumber(); if (_rows != null && _lastSequence >= lastSequence) { return; // db hasn't changed since last query } if (_isUpdatingAtSequence > 0) { // Update already in progress; only schedule another one if db has changed since if (_isUpdatingAtSequence < lastSequence) { _isUpdatingAtSequence = lastSequence; _updateAgain = true; return; } } if (!_runningState) { Log.To.Query.D(TAG, "Update called, but running state == false. Ignoring."); return; } _updateAgain = false; _isUpdatingAtSequence = lastSequence; _lastUpdatedAt = DateTime.Now; UpdateQueryTokenSource = new CancellationTokenSource(); Log.To.TaskScheduling.V(TAG, "Scheduling query run..."); UpdateQueryTask = Task.Factory.StartNew <QueryEnumerator>(base.Run, UpdateQueryTokenSource.Token) .ContinueWith(UpdateFinished, _eventContext.Scheduler); }
public virtual bool IsStale() { return(sequenceNumber < database.GetLastSequenceNumber()); }
public bool IsStale() { return(GetLastSequenceIndexed() < database.GetLastSequenceNumber()); }
public bool IsStale() { return(SequenceNumber < _database.GetLastSequenceNumber()); }