Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将浮点值指定给性能计数器_C#_Performancecounter - Fatal编程技术网

C# 将浮点值指定给性能计数器

C# 将浮点值指定给性能计数器,c#,performancecounter,C#,Performancecounter,我在C#中创建了一个性能计数器。但是,当给它赋值时,我希望该值是浮点,而不是长,但我似乎不知道该怎么做。有人能帮忙吗 我使用的代码来自: 公共静态无效测试() { var ccdc=new CounterCreationDataCollection(); //添加计数器。 const string counterName=“RateOfCountsPerSecond64Sample”; var RateOfCounts 64=新的反向创建数据 { 计数器类型=PerformanceCounter

我在C#中创建了一个性能计数器。但是,当给它赋值时,我希望该值是
浮点
,而不是
,但我似乎不知道该怎么做。有人能帮忙吗

我使用的代码来自:

公共静态无效测试()
{
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);