displayLength = new Dictionary<string, int>();
knownProvidersRowNum = new Dictionary<string, int>();
unknownProvidersRowNum = new Dictionary<string, int>();
- leftAlign = 45; // Width of counter names column
+ int maxNameWidth = -1;
foreach(CounterProvider provider in KnownData.GetAllProviders())
{
+ foreach(CounterProfile counterProfile in provider.GetAllCounters())
+ {
+ if (counterProfile.DisplayName.Length > maxNameWidth)
+ {
+ maxNameWidth = counterProfile.DisplayName.Length;
+ }
+ }
knownProvidersRowNum[provider.Name] = -1;
}
+ leftAlign = maxNameWidth + 15;
}
public void InitializeDisplay()
if (displayPosition.ContainsKey(keyName))
{
(int left, int row) = displayPosition[keyName];
- int clearLength = displayLength[keyName];
+ string payloadVal = payload.GetValue();
+
+ int clearLength = Math.Max(displayLength[keyName], payloadVal.Length); // Compute how long we need to clear out.
+ displayLength[keyName] = clearLength;
Console.SetCursorPosition(left, row);
Console.Write(new String(' ', clearLength));
{
Console.SetCursorPosition(left, row);
}
- Console.Write(payload.GetValue());
+ Console.Write(payloadVal);
}
// Got a payload from a new counter that hasn't been written to the console yet.
else
private static readonly IReadOnlyDictionary<string, CounterProvider> _knownProviders =
CreateKnownProviders().ToDictionary(p => p.Name, StringComparer.OrdinalIgnoreCase);
-
private static IEnumerable<CounterProvider> CreateKnownProviders()
{
yield return new CounterProvider(