public void Refresh(CriteriaType criteriaType, TCriteria criteria) { Busy = true; Guid refreshGuid = Guid.NewGuid(); _refreshGuid = refreshGuid; PaginationService.GetItems(criteriaType, PageSize, criteria, items => { if (_refreshGuid != refreshGuid) { return; } _dispatcher.Invoke(() => { CriteriaType = criteriaType; if (criteriaType == CriteriaType.DownFromInfinity && items.Any()) { Criteria = _getCriteriaFunc(items.First()); } else if (criteriaType == CriteriaType.UpFromInfinity && items.Any()) { Criteria = _getCriteriaFunc(items.Last()); } else { Criteria = criteria; } UpdateItems(items); Busy = false; }); }); }