private void AddLoadedProjectToRoot(ProjectSubject project, IReporter reporter, int totalProjectsCount) { int numberOfLoadedProjects; lock (rootWriteLock) { root.SetChildren(root.Children.Add(project)); numberOfLoadedProjects = root.Children.Count; } reporter.Report($"Loaded projects {numberOfLoadedProjects}/{totalProjectsCount}"); }
private async Task LoadChunkOfProjects(List <Project> projects, IReporter reporter, int totalProjectsCount) { foreach (Project project in projects) { if (string.IsNullOrEmpty(project.FilePath) || (!string.Equals(project.Language, "csharp", StringComparison.OrdinalIgnoreCase) && !string.Equals(project.Language, "c#", StringComparison.OrdinalIgnoreCase))) { continue; } var projectSubject = new ProjectSubject(project); projectSubject.SetParent(root); foreach (Document document in project.Documents) { if (document.SourceCodeKind != SourceCodeKind.Regular) { continue; } var documentSubject = new DocumentSubject(document); documentSubject.SetParent(projectSubject); await documentSubject.LoadAsync(); CategoriseDocument(documentSubject); filesCategory.AddSubject(documentSubject); projectSubject.SetChildren(projectSubject.Children.Add(documentSubject)); } projectsCategory.AddSubject(projectSubject); AddLoadedProjectToRoot(projectSubject, reporter, totalProjectsCount); } }