0

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

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()我的应用程序,但我从未看到性能计数器值移动。即使我每秒运行多次。

我需要什么特别的东西或者我需要增加一个特定的值来让 PerformanceCounter 显示一些东西吗?

弄清楚了

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

4

3 回答 3

1

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

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();
    }
}
于 2009-10-19T05:28:18.317 回答
0

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

于 2009-10-18T21:30:49.947 回答
0

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

此外,请确保您在读写模式下创建计数器(通过将 false 传递给 readOnly 参数)。

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

于 2009-10-19T02:52:39.020 回答