c#中的RawFraction性能计数器

本文关键字:性能计数器 RawFraction 中的 | 更新日期: 2023-09-27 18:19:52

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

所以totalActions是我的Rawbase计数器,totalActionType1是我的原始分数计数器。我在特定的地方把两个计数器都加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);

谢谢,

c#中的RawFraction性能计数器

因此,我假设您在安装程序类中创建了如下计数器。重要的是,基本计数器紧跟在计算出的计数器之后。

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

如果是这样,那么您可以通过为RawFraction创建一个PerformanceCounter实例并对其调用NextValue()来查询它

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

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