我在项目中使用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);
谢谢,
答案 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。