2

2 つのパフォーマンス カウンターの値を更新する WCF サービスがあります。1 つ目は NumberOfItems64 として定義され、2 つ目は RateOfCountsPerSecond64 として定義されます。それらの値を更新すると (1 秒間に数回これを行います)、perfmon は最初のカウンターの正しい値を期待どおりに表示しますが、2 番目のカウンターの値は常に 0 であると表示します。コードをデバッグすると、 2 番目のカウンターの RawValue プロパティは期待どおりに更新されます...

カウンターを作成するための PowerShell コードは次のとおりです。

$categoryName = "My category"

$exists = [System.Diagnostics.PerformanceCounterCategory]::Exists($categoryName)
if ($exists)
{
    [System.Diagnostics.PerformanceCounterCategory]::Delete($categoryName)
}

$counters = new-object System.Diagnostics.CounterCreationDataCollection

$counter = new-object System.Diagnostics.CounterCreationData
$counter.CounterType = [System.Diagnostics.PerformanceCounterType]::NumberOfItems64
$counter.CounterName = "# ops"
$counters.Add($counter)

$counter = new-object System.Diagnostics.CounterCreationData
$counter.CounterType = [System.Diagnostics.PerformanceCounterType]::RateOfCountsPerSecond64
$counter.CounterName = "# ops/sec"
$counters.Add($counter)

[System.Diagnostics.PerformanceCounterCategory]::Create($categoryName, $categoryName, [System.Diagnostics.PerformanceCounterCategoryType]::MultiInstance, $counters)

カウンターの値を更新するコードは次のとおりです。

long value = GetValue();
counter1.IncrementBy(value);
counter2.IncrementBy(value);

StackOverflow でこの質問を見つけました。これは私のものとかなり似ています。RateOfCountsPerSecond32 型のカウンターは常に 0 を示しますが、問題は解決しません。

何か案が ?

4

2 に答える 2

1

コンピューターの再起動後、コードが期待どおりに機能します...奇妙な!!!!!!!!

于 2012-08-09T07:24:13.520 に答える