代码之家  ›  专栏  ›  技术社区  ›  Eric Schoonover thSoft

需要使用CounterDelta32 PerformanceCounter的示例

  •  0
  • Eric Schoonover thSoft  · 技术社区  · 15 年前

    我试图显示自上次性能迭代以来操作发生的次数。我使用以下方法创建了一个性能计数器:

    var clearStateCounterData = new CounterCreationData()
    {
        CounterName = ClearStateName,
        CounterHelp = "The number of times the service state has been cleared since the last performance iteration",
        CounterType = PerformanceCounterType.CounterDelta32
    };
    

    然后我打电话 counter.Increment() 在我的应用程序中,但我从未看到性能计数器的值移动。即使我每秒运行多次。

    是否有我需要的特殊值或我需要增加的特定值以使性能计数器显示某些内容?

    算了出来

    我在下面的答案中举了一个使用这个计数器的例子。谢谢你们的帮助。

    3 回复  |  直到 15 年前
        1
  •  1
  •   Eric Schoonover thSoft    15 年前

    这是一个对我有用的例子。

    class Program
    {
        const string CategoryName = "____Test Category";
        const string CounterName = "Clear State Operations";
    
        static void Main(string[] args)
        {
            if (PerformanceCounterCategory.Exists(CategoryName))
                PerformanceCounterCategory.Delete(CategoryName);
    
            var counterDataCollection = new CounterCreationDataCollection();
    
            var clearStateCounterData = new CounterCreationData()
            {
                CounterName = CounterName,
                CounterHelp = "The number of times the service state has been cleared since the last performance iteration",
                CounterType = PerformanceCounterType.CounterDelta32
            };
            counterDataCollection.Add(clearStateCounterData);
    
            PerformanceCounterCategory.Create(CategoryName, "Test Perf Counters", PerformanceCounterCategoryType.SingleInstance, counterDataCollection);
    
            var counter = new PerformanceCounter(CategoryName, CounterName, false);
    
            for (int i = 0; i < 5000; i++)
            {
                var sw = Stopwatch.StartNew();
                Thread.Sleep(10300);
                sw.Stop();
    
                counter.Increment();
            }
    
            Console.Read();
        }
    }
    
        2
  •  0
  •   Thomas Levesque    15 年前

    这不足以创建计数器…根据文档,您需要创建一个 PerformanceCounterCategory 并创建 PerformanceCounter . 查看msdn中的示例: http://msdn.microsoft.com/en-us/library/system.diagnostics.performancecounter.aspx

        3
  •  0
  •   Chris Patterson    15 年前

    创建计数器后(使用CounterCreationData和Create in PerformanceCounterCategory),然后创建计数器的实例(使用PerformanceCounter),需要初始化计数器值以在性能监视器中启动该实例。

    另外,确保您正在以读写模式创建计数器(通过向readonly参数传递false)。

    您可以尝试设置rawvalue=rawvalue或rawvalue=0来启动它并查看它是否出现。