public static void Print(ProcessAnalysisResult analysis, bool log = false) { foreach (var unifiedThread in analysis.Threads) { var print = GetData(unifiedThread); PrintToLog(print); PrintToConsole(print); } if (IsSet(Options, PrintOptions.HandlesSummary)) { var sammary = GetSummary(analysis); PrintToLog(sammary); PrintToConsole(sammary); } }
private static StringBuilder GetSummary(ProcessAnalysisResult analysis) { StringBuilder sb = new StringBuilder(); Dictionary<string, int> temp = new Dictionary<string, int>(); sb.AppendLine(":: SUMMARY ::"); foreach (var item in analysis.Threads) { if (item.BlockingObjects == null) continue; foreach (var block in item.BlockingObjects) { var key = block.Reason.ToString(); if (temp.ContainsKey(block.Reason.ToString())) { temp[key]++; } else { temp[key] = 1; } } } foreach (var item in temp) { sb.AppendLine($"{item.Key} : {item.Value}"); } sb.AppendLine($"Elapsed Time: {analysis.ElapsedMilliseconds}"); return sb; }