如何在一个应用程序(.exe)中定义和使用两个AverageTimer32性能计数器?
附加说明:
我正在尝试这样的措施花时间在一个行动的不同部分。
我有一个AverageTimer32性能计数器和一个AverageBase。它起作用了。
现在我要添加第二个AverageTimer32性能计数器。即使我再加一个平均基数计数器,它也不起作用。我想我弄错了。代码示例非常受欢迎。
这是代码的不同部分:
_AverageDuration = new PerformanceCounter();
_AverageDuration.CategoryName = CategoryName;
_AverageDuration.CounterName = "average time per operation";
_AverageDuration.MachineName = ".";
_AverageDuration.ReadOnly = false;
_AverageDurationBase = new PerformanceCounter();
_AverageDurationBase.CategoryName = CategoryName;
_AverageDurationBase.CounterName = "average time per operation base";
_AverageDurationBase.MachineName = ".";
_AverageDurationBase.ReadOnly = false;
...
CounterCreationDataCollection counters = new CounterCreationDataCollection();
...
CounterCreationData avgDuration = new CounterCreationData();
avgDuration.CounterName = "average time per operation";
avgDuration.CounterHelp = "Average duration per operation execution";
avgDuration.CounterType = PerformanceCounterType.AverageTimer32;
counters.Add(avgDuration);
CounterCreationData avgDurationBase = new CounterCreationData();
avgDurationBase.CounterName = "average time per operation base";
avgDurationBase.CounterHelp = "Average duration per operation execution base";
avgDurationBase.CounterType = PerformanceCounterType.AverageBase;
counters.Add(avgDurationBase);
...
PerformanceCounterCategory.Create(CategoryName, "Category for Receiver", PerformanceCounterCategoryType.Unknown, counters);
...
AverageDuration.IncrementBy(performanceCounterwatch.ElapsedTicks);
AverageDurationBase.Increment();
最佳答案
添加顺序至关重要。你必须加上平均数,然后是它对应的基数,然后是第二个平均数,然后是第二个对应的基数。
关于c# - 2 AverageTimer32性能计数器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11281163/