2009-03-05 6 views
0

私はSystem.DiagnosticのC#PerformanceCounterライブラリ部分にしようとしています。カウンタの生の値を設定しているときc#performanceカウンタ設定生カウンタ値

public long RawValue {取得する; }

私はRawalueを0にしていましたが、カウンタの最大値が非常に大きな値にリセットされていました。カウンターの前の値が2

誰かが私を助け、私が作っている可能性のある間違いを指摘することができ、ここに私のコードは、私はあなたが本当に間違いを犯しているとは思わない

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

答えて

1

ですました。

最大値はPerformanceCounter自体の機能ではありません。 PerfMonのような監視ツールの一部です。 PerformanceCounterクラスを使用して設定することはできません。

アプリケーションが有用なデータをアプリケーションに適用しようとする前に、RawValueをゼロに設定することをお勧めします。これは、単一のインスタンスカテゴリ(PerformanceCounterCategoryType.SingleInstance)を使用する複数のアプリケーション、またはPerformanceCounterCategoryType.MultiInstanceに同じインスタンス名(インスタンス名が「」の場合は「」など)を使用すると難しい場合があります。

非常に高い数値は、パフォーマンスカウンタ変数を格納するために使用される初期化されていないメモリブロックからの乱数です。新しいPerformanceCounterオブジェクトをインスタンス化することにより、複数のアプリケーションが進行中のパフォーマンスカウンタにアクセスしようとする可能性があるため、そのインスタンス化プロセスは、自動的に値をゼロに設定しません。

+0

PerfMonの開発チーム全体が、プライマリユーザーの関心事の変数をゼロに初期化する必要がないと感じたら、私は驚いています。 –