编程语言
首页 > 编程语言> > c# – CounterSample中的时间字段是什么意思?

c# – CounterSample中的时间字段是什么意思?

作者:互联网

我有一个PerformanceCounter实例,我在其上调用NextSample()并得到一个CounterSample.其中有几个与时间相关的字段:CounterFrequency,SystemFrequency,CounterTimeStamp,Timestamp和TimeStamp100nSec.

MSDN page for CounterSample只说“获取原始计数器频率”和类似的无用描述,以及打印该值而没有解释的样本.

>这些是什么意思?
>他们是什么单位?我尝试了所有DateTime.FromX()函数,但没有一个产生合理的结果.

解决方法:

(sample2.Timestamp - sample1.Timestamp) / sample2.SystemFrequency = elapsed seconds

(sample2.TimeStamp100nSec - sample1.TimeStamp100nSec) / 10000000 = elapsed seconds

当我分析LOGMAN.EXE如何读取perf计数器并将它们存储在SQL数据库中时,我能够对此进行逆向工程. CounterSample类(来自各种反汇编)包装了这个C结构

PDH_RAW_COUNTER

在这个C结构中,SecondValue有TimeStamp或TimeStamp100nSec depending on the counter type.当它被.NET CounterSample结构包装时,您可以通过属性获得.

标签:c,system-diagnostics
来源: https://codeday.me/bug/20190530/1183839.html