C# 间隔期间的性能计数器最大值?

C# 间隔期间的性能计数器最大值?,c#,.net,performancecounter,C#,.net,Performancecounter,我有一个正在执行许多操作的应用程序。我有一些性能计数器,用于测量在间隔之间执行操作所需的平均时间。我想要一个计数器,每个间隔将显示自上次间隔以来处理其中一个操作所用的最长时间 对于平均值,我使用AverageTimer32实例和AverageBase实例类型的PerformanceCounter。我将使用哪种性能计数器来跟踪间隔之间的最大运行时间?它将如何递增?没有此类计数器类型。尝试实现您自己的(读取当前值、比较、更改(如果是新的最大值)在并发条件下存在缺陷,因为性能计数器没有原子联锁比较交换

我有一个正在执行许多操作的应用程序。我有一些性能计数器,用于测量在间隔之间执行操作所需的平均时间。我想要一个计数器,每个间隔将显示自上次间隔以来处理其中一个操作所用的最长时间


对于平均值,我使用AverageTimer32实例和AverageBase实例类型的PerformanceCounter。我将使用哪种性能计数器来跟踪间隔之间的最大运行时间?它将如何递增?

没有此类计数器类型。尝试实现您自己的(读取当前值、比较、更改(如果是新的最大值)在并发条件下存在缺陷,因为性能计数器没有原子联锁比较交换API。

这是否意味着无法实现类似的功能?可以使用跟踪最大值并在适当锁定下递增的变量,并将其发布为普通的绝对计数器。这似乎不是一个真正的选项。您无法知道上次间隔的时间,因此无法跟踪自上次间隔以来的最大值。您可以跟踪自应用程序启动时间以来的最大值。或者您在应用程序中保留一个系列并自行管理,例如,将计数器发布为“最近60秒内的最大值”。每个读卡器的最大间隔是不可能的,这意味着性能计数器需要跟踪读卡器,这不是计数器的工作方式,它们只有一个原始值,其余由读卡器计算