C# 将浮点值指定给性能计数器
我在C#中创建了一个性能计数器。但是,当给它赋值时,我希望该值是C# 将浮点值指定给性能计数器,c#,performancecounter,C#,Performancecounter,我在C#中创建了一个性能计数器。但是,当给它赋值时,我希望该值是浮点,而不是长,但我似乎不知道该怎么做。有人能帮忙吗 我使用的代码来自: 公共静态无效测试() { var ccdc=new CounterCreationDataCollection(); //添加计数器。 const string counterName=“RateOfCountsPerSecond64Sample”; var RateOfCounts 64=新的反向创建数据 { 计数器类型=PerformanceCounter
浮点
,而不是长
,但我似乎不知道该怎么做。有人能帮忙吗
我使用的代码来自:
公共静态无效测试()
{
var ccdc=new CounterCreationDataCollection();
//添加计数器。
const string counterName=“RateOfCountsPerSecond64Sample”;
var RateOfCounts 64=新的反向创建数据
{
计数器类型=PerformanceCounterType.RateOfCounterSecond64,
计数器名称=计数器名称
};
ccdc.Add(计数比率64);
//创建类别。
const string categoryName=“RateOfCountsPerSecond64SampleCategory”;
if(PerformanceCounterCategory.Exists(categoryName))
PerformanceCounterCategory.Delete(categoryName);
PerformanceCounterCategory.Create(categoryName,“,
PerformanceCounterCategoryType.SingleInstance,ccdc);
//创建计数器
var pc=新的PerformanceCounter(类别名称、计数器名称、false);
pc.RawValue=1000;//嗯,你不能;数据类型是long
。只需按某个因子进行缩放即可(这样你就可以保留小数点后几位作为低位)-例如x1000-并将其四舍五入:
pc.RawValue = (long)(value * 1000);
但是,由于您使用的是RateOfCountersSecond32
,因此您应该记录总数,而不是速率。后端会计算速率。您不能,如果您仔细想想,它就没有任何意义。计数器统计不同的事件,不能有半个事件。计数器只能在事件发生时递增
速率计数器实际上是为了显示而计算间隔之间的基本计数器的差值。PerSecond
计数器使用系统提供的间隔计数器,该计数器每秒递增一次。只要在发生事件时递增计数器,操作系统就会计算速率
其他计算平均值的计数器也允许您增加基本计数器,因此您可以拥有例如每个数据包的字节
计数器RawValue是一个long属性,那么为什么要将float值指定给long属性呢?
pc.RawValue = (long)(value * 1000);