【问题标题】:C# PerformanceCounter list of possible Parameters?C# PerformanceCounter 可能的参数列表?
【发布时间】:2014-04-29 13:59:08
【问题描述】:

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

但是我无法找到关于以下可能值的文档:

PerfomanceCounter.CategoryName
PerformanceCounter.CounterName
PerformanceCounter.InstanceName

I can see from the class the different parameters 我可以传递给构造函数,但即使转到 the page for say CategoryName 也不会给我可用值的列表。

任何人都可以就如何找到这些可用值提供建议和建议吗?

谢谢!

【问题讨论】:

    标签: c# parameters performancecounter


    【解决方案1】:

    这些可以从PerformanceCounterCategory类中获得:

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

    【讨论】:

    • 哇,有很多类别,我想我需要改写一下我的问题。此外,它不断让我崩溃,说当前上下文中不存在诸如 DllHost/1 之类的东西。所以我还没有检索到完整的列表!
    • 请注意,您可以使用标准 Linq 查询对类别数组进行过滤。
    • 任何人都可以在网上发布列表吗?
    【解决方案2】:

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

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

        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());
        }
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-24
        • 1970-01-01
        • 2014-11-02
        • 1970-01-01
        • 2015-12-28
        相关资源
        最近更新 更多