private async void ThumbnailDispatcherTimerOnTick(object sender, EventArgs eventArgs) { if (CollectionView.View.IsEmpty) { return; } int firstVisibleItem; int lastVisibleItem; _specialUniformGrid.GetVisibleRange(out firstVisibleItem, out lastVisibleItem); lastVisibleItem += 1; var items = CollectionView.View.Cast <ClientViewModel>() .Skip(firstVisibleItem > 1 ? firstVisibleItem - 1 : 0) .Take(lastVisibleItem).ToList(); var totalImagesInMemory = _clientProvider.Clients.Where(x => x.Thumbnail != null && !items.Contains(x)).ToList(); if (totalImagesInMemory.Count > 60) { foreach (var clientViewModel in totalImagesInMemory.OrderBy(x => x.ThumbnailTimestamp).Take(75 - items.Count) ) { clientViewModel.Thumbnail = null; } } try { await Task.Run(() => _clientProvider.GetClientScreens(items.Select(x => x.Id).ToList())); } catch (InvalidOperationException) { } }