c#中的RawFraction性能计数器

时间:2012-01-10 19:07:18

标签: c# performance

我在项目中使用RawFraction性能计数器时遇到问题。我想要的只是显示totalActionType1 / totalActions的一小部分。

所以totalActions是我的Rawbase计数器,而totalActionType1是我的Rawfraction计数器。 我在特定位置将两个计数器递增1,但我怎么能看到比率。我知道我做的事情/一切都错了。 msdn上的帖子也没有帮助。

我可以看到使用CounterSample计算浮点值但是如何将浮点值显示为计数器原始值。

//Here is how I am incrementing the counters:

case CounterType.totalActions:
totalActions.Increment();
break;


case CounterType.totalActionType1:
totalActionType1.Increment();
break;

//Counter Creation:
totalActionType1 = new PerformanceCounter("Fract","RawFractionType", false);
totalActions = new PerformanceCounter("Fract","RawFractionBaseType", false);
var value = totalActionType1.NextValue();

//Counter Setup:
var countActionType1 = new CounterCreationData("RawFractionType", "", CounterType.RawFraction);
var countTotalActions= = new CounterCreationData("RawFractionBaseType", "", CounterType.RawBase);
categoryCollection.Add(countActionType1 ); 
categoryCollection.Add(countTotalActions);
PerformanceCounterCategory.Create("Fract", "", PerformanceCounterCategoryType.SingleInstance, categoryCollection);

谢谢,

1 个答案:

答案 0 :(得分:1)

因此,我假设您在安装程序类中创建了如下所示的计数器。基准计数器紧跟计算的计数器非常重要。

            installer.Counters.Add(
                new CounterCreationData(counterName, counterDescription,
                                        PerformanceCounterType.RawFraction));
            installer.Counters.Add(
                new CounterCreationData(counterName + "-Base",
                                        counterDescription,
                                        PerformanceCounterType.RawBase));

如果是这样,您可以通过为PerformanceCounter创建RawFraction实例并在其上调用NextValue()来查询它。

// for read-only access to it
var pc = new PerformanceCounter(categoryName, counterName, true);

var value = pc.NextValue();

对于某些计数器类型,您必须先调用NextValue()两次,以进行计算。另外,请记住RawFraction显示为百分比,因此如果值为0.40,则显示为40.0。