C#性能计数器可能的参数列表

本文关键字:参数 列表 性能计数器 | 更新日期: 2023-09-27 18:00:58

我使用的是System.Data PerfomanceCounter类,我发现了一些关于如何检索磁盘空间或CPU使用情况的非常具体的示例。

但是,我找不到关于可能值的文档

PerfomanceCounter.CategoryName
PerformanceCounter.CounterName
PerformanceCounter.InstanceName

我可以从类中看到我可以传递给构造函数的不同参数,但即使转到例如CategoryName的页面也不会给我可用值的列表。

有人能就如何找到这些产品的可用价值提供建议吗?

谢谢!

C#性能计数器可能的参数列表

这些可以从PerformanceCounterCategory类获得:

PerformanceCounterCategory[] categories = PerformanceCounterCategory.GetCategories();
foreach(var category in categories)
{
    string[] instanceNames = category.GetInstanceNames();
    foreach(string instanceName in instanceNames)
        PerformanceCounter[] counters = category.GetCounters(instanceName);
}

这里有一些代码可以修改以获得您想要的计数器(有太多的计数器无法发布(。

将输出所有类别,但计数器将仅输出所需类别。

    private static void PrintPerformanceCounterParameters()
    {
        var sb = new StringBuilder();
        PerformanceCounterCategory[] categories = PerformanceCounterCategory.GetCategories();
        var desiredCategories = new HashSet<string> {"Process", "Memory"};
        foreach (var category in categories)
        {
            sb.AppendLine("Category: " + category.CategoryName);
            if (desiredCategories.Contains(category.CategoryName))
            {
                PerformanceCounter[] counters;
                try
                {
                    counters = category.GetCounters("devenv");
                }
                catch (Exception)
                {
                    counters = category.GetCounters();
                }
                foreach (var counter in counters)
                {
                    sb.AppendLine(counter.CounterName + ": " + counter.CounterHelp);
                }
            }
        }
        File.WriteAllText(@"C:'performanceCounters.txt", sb.ToString());
    }

您可以通过搜索类别+"对象"在Microsoft页面上找到它们。例如,对于内存进程对象,它应该是这样的:"performance counters process object"。https://msdn.microsoft.com/en-us/library/ms804621.aspx