System.Diagnostics 中是否有内置方法来检索给定类别名称的所有实例化性能计数器?
我们有许多使用自定义性能计数器的多线程应用,现在需要添加一个仪表板来显示性能统计信息。
我希望以这样一种方式制作仪表板,只要有人向新代码段添加新计数器,它就不需要更新。
最佳答案
试试这个:
public void ListCounters(string categoryName)
{
PerformanceCounterCategory category = PerformanceCounterCategory.GetCategories().First(c => c.CategoryName == categoryName);
Console.WriteLine("{0} [{1}]", category.CategoryName, category.CategoryType);
string[] instanceNames = category.GetInstanceNames();
if (instanceNames.Length > 0)
{
// MultiInstance categories
foreach (string instanceName in instanceNames)
{
ListInstances(category, instanceName);
}
}
else
{
// SingleInstance categories
ListInstances(category, string.Empty);
}
}
private static void ListInstances(PerformanceCounterCategory category, string instanceName)
{
Console.WriteLine(" {0}", instanceName);
PerformanceCounter[] counters = category.GetCounters(instanceName);
foreach (PerformanceCounter counter in counters)
{
Console.WriteLine(" {0}", counter.CounterName);
}
}
您必须了解可以有多个实例的类别,并以稍微不同的方式处理这些类别。
关于c# - 列出一个类别的所有性能计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1304949/