private void FillValidatedParts(bool onlyOnce = false) { var validBricks = BrickListCache.GetValidatedBricks(); var newBricks = validBricks.Except(BrickList) .OrderBy(x => x.PartId).ToList(); const int MAX_ADD = 200; //add items in batches to prevent freezing the window while (newBricks.Count > 0) { var range = newBricks.Take(MAX_ADD).ToList(); BrickList.AddRange(range); if (IsListFiltered) { FilteredBrickList.AddRange(range.Where(x => IsBrickVisible(x))); } newBricks.RemoveRange(0, range.Count); if (onlyOnce) { break; } if (newBricks.Count > 0) { Application.DoEvents(); } } }
private Models.BrickInfo FindPartInfo(int partID) { try { var brickInfo = BrickListCache.GetBrick(partID); if (brickInfo != null) { return(brickInfo); } var part = PartWrapper.LoadPart(LDDEnvironment.Current, partID, false); if (part != null) { return(new BrickInfo(part)); } } catch { } return(null); }
private void FillValidatedParts(bool onlyOnce = false) { var validBricks = BrickListCache.GetValidatedBricks(); var newBricks = validBricks.Except(BrickList) .OrderBy(x => x.PartId).ToList(); const int MAX_ADD = 200; //add items in batches to prevent freezing the window while (newBricks.Count > 0) { var range = newBricks.Take(MAX_ADD).ToList(); var curScrollRow = BrickGridView.FirstDisplayedScrollingRowIndex; IsUpdatingList = true; BrickList.AddRange(range); if (IsListFiltered) { FilteredBrickList.AddRange(range.Where(x => IsBrickVisible(x))); } if (curScrollRow >= 0 && curScrollRow != BrickGridView.FirstDisplayedScrollingRowIndex) { //fix to prevent scrolling back to first row BrickGridView.FirstDisplayedScrollingRowIndex = curScrollRow; } IsUpdatingList = false; newBricks.RemoveRange(0, range.Count); if (onlyOnce) { break; } if (newBricks.Count > 0) { Application.DoEvents(); } } }
private void StartLoadingBricks() { if (BrickListCache.IsCacheDirty || BrickListCache.IsCacheEmpty) { LoadingProgressBar.Visible = true; LoadingProgressBar.Style = ProgressBarStyle.Marquee; //TotalBricksLoaded = 0; CTS = new CancellationTokenSource(); BrickLoadingTask = Task.Factory.StartNew(() => BrickListCache.RebuildCache(CTS.Token) ); RefreshTimer.Start(); } if (!BrickListCache.IsCacheEmpty) { BrickList.Clear(); FillValidatedParts(BrickLoadingTask != null); } }