private void FindLargeFilesFunction() { try { var data = GetLargeFiles(_threshold); Dictionary <string, DateTime> revData = new Dictionary <string, DateTime>(); foreach (var d in data) { string commit = d.Commit.First(); DateTime date; if (!revData.ContainsKey(commit)) { var args = new GitArgumentBuilder("show") { "-s", commit, "--format=\"%ci\"" }; string revDate = _gitCommands.GitExecutable.GetOutput(args); DateTime.TryParse(revDate, out date); revData.Add(commit, date); } else { date = revData[commit]; } if (!_list.TryGetValue(d.SHA, out var curGitObject)) { d.LastCommitDate = date; _list.Add(d.SHA, d); ThreadHelper.JoinableTaskFactory.Run(async() => { await BranchesGrid.SwitchToMainThreadAsync(); _gitObjects.Add(d); }); } else if (!curGitObject.Commit.Contains(commit)) { if (curGitObject.LastCommitDate < date) { curGitObject.LastCommitDate = date; } ThreadHelper.JoinableTaskFactory.Run(async() => { await BranchesGrid.SwitchToMainThreadAsync(); _gitObjects.ResetItem(_gitObjects.IndexOf(curGitObject)); }); curGitObject.Commit.Add(commit); } } string objectsPackDirectory = _gitCommands.ResolveGitInternalPath("objects/pack/"); if (Directory.Exists(objectsPackDirectory)) { var packFiles = Directory.GetFiles(objectsPackDirectory, "pack-*.idx"); foreach (var pack in packFiles) { var args = new GitArgumentBuilder("verify-pack") { "-v", pack }; string[] objects = _gitCommands.GitExecutable.GetOutput(args).Split('\n'); ThreadHelper.JoinableTaskFactory.Run(async() => { await pbRevisions.SwitchToMainThreadAsync(); pbRevisions.Value = pbRevisions.Value + (int)((_revList.Length * 0.1f) / packFiles.Length); }); foreach (var gitObject in objects.Where(x => x.Contains(" blob "))) { string[] dataFields = gitObject.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); if (_list.TryGetValue(dataFields[0], out var curGitObject)) { if (int.TryParse(dataFields[3], out var compressedSize)) { curGitObject.CompressedSizeInBytes = compressedSize; ThreadHelper.JoinableTaskFactory.Run(async() => { await BranchesGrid.SwitchToMainThreadAsync(); _gitObjects.ResetItem(_gitObjects.IndexOf(curGitObject)); }); } } } } } ThreadHelper.JoinableTaskFactory.Run(async() => { await pbRevisions.SwitchToMainThreadAsync(); pbRevisions.Hide(); }); ThreadHelper.JoinableTaskFactory.Run(async() => { await BranchesGrid.SwitchToMainThreadAsync(); BranchesGrid.ReadOnly = false; }); } catch { } }