1

我正在尝试 System.Diagnostic 的 c# PerformanceCounter Library 部分。在使用设置计数器的原始值时

公共长原始值 { 设置;得到; }

我将 Rawalue 传递给 0。但是我注意到计数器的最大值被重置为一个非常大的数字。计数器的先前值为 2

有人可以帮助我并指出我可能犯的任何错误,这是我的代码

using (PerformanceCounter ctr = new     
PerformanceCounter(Settings.Instance.SetSourceAppliacationName, counter.ToString(), false))
{
    if (incrementCounter)
    {
        ctr.IncrementBy(value);
    }
    else
    {
        ctr.RawValue = value;
    }
}
4

1 回答 1

1

我不认为你真的犯了一个错误。

最大值不是 PerformanceCounter 本身的特性;它是监控工具(如 PerfMon)的一部分。您不能使用 PerformanceCounter 类来设置它。

您可能想要做的一件事是在应用程序开始尝试将有用数据应用到其中之前将 RawValue 设置为零。如果您有多个应用程序使用单个实例类别 (PerformanceCounterCategoryType.SingleInstance) 或 PerformanceCounterCategoryType.MultiInstance 的相同实例名称(如“”实例名称),这可能会很棘手。

非常高的数字可能只是来自用于存储性能计数器变量的未初始化内存块中的某个随机数。由于多个应用程序可能会尝试通过实例化新的 PerformanceCounter 对象来访问正在进行的性能计数器,因此该实例化过程不会根据设计自动将值设置为零。

于 2009-06-27T00:59:04.713 回答