private static void RebuildAll(CancellationToken ct) { Bricks.Clear(); using (var content = new LifContentWrapper(Source, SourcePath)) { var primitiveFiles = content.GetPrimitiveFiles(); var partIDs = primitiveFiles.Select(x => x.PartID).Distinct(); CurrentProgress = new ProgressInfo(partIDs.Count(), 0); foreach (int partID in partIDs) { if (ct.IsCancellationRequested) { break; } try { var partInfo = content.GetPart(partID); var brickInfo = new BrickInfo(partInfo) { Validated = true, LastUpdate = DateTime.Now }; Bricks.Add(brickInfo); } catch { } CurrentProgress.TotalValidated++; } } }
private static void DifferencialRebuild(CancellationToken ct) { foreach (var brickInfo in Bricks) { if (ChangedParts.Contains(brickInfo.PartId)) { brickInfo.Validated = false; } } CurrentProgress = new ProgressInfo(ChangedParts.Count, 0); foreach (int partID in ChangedParts) { if (ct.IsCancellationRequested) { break; } var brickInfo = GetBrick(partID); PartWrapper partInfo = null; try { partInfo = PartWrapper.GetPartFromDirectory(SourcePath, partID, false); } catch { } if (brickInfo != null && partInfo == null) { Bricks.Remove(brickInfo); continue; } else if (partInfo != null) { if (brickInfo == null) { brickInfo = new BrickInfo(partInfo) { LastUpdate = DateTime.Now, Validated = true }; Bricks.Add(brickInfo); } else { brickInfo.UpdateInfo(partInfo); brickInfo.LastUpdate = DateTime.Now; brickInfo.Validated = true; } } CurrentProgress.TotalValidated++; } ChangedParts.Clear(); }
public bool ContainsBrick(int id, out BrickInfo foundBrick) { foundBrick = Bricks.FirstOrDefault(x => x.PartId == id); return(foundBrick != null); //if (Dictionary.Count == 0) //{ // foundBrick = Bricks.FirstOrDefault(x => x.PartId == id); // return foundBrick != null; //} //else // return Dictionary.TryGetValue(id, out foundBrick); }