パフォーマンスカウンターを正しく作成して設定していますが、カテゴリーを削除すると、同じ名前のカテゴリーを再作成してそのカテゴリーにカウンターを追加/カウンタとその値を更新できません。パフォーマンスカテゴリを削除した後もRawFractionパフォーマンスカウンターがその状態を維持します
次のコードは初めて正常に動作しますが、2回目は正常に動作しません。 「カテゴリを削除する」というコードは今必要ではありませんが、アプリケーションを配備するたびに既存のカテゴリを削除できるようにしたいと考えています。
カウンタをリセットしないでリセットしたり値をリセットしたりすると、カウンタを完全に削除できますか?
private PerformanceCounter mainCounter;
private PerformanceCounter mainCounterBase;
private string category = "TestPerformanceCounterTest";
public void Test()
{
//Counter setup
if (PerformanceCounterCategory.Exists(category))
PerformanceCounterCategory.Delete(category);
if (!PerformanceCounterCategory.Exists(category))
{
var categoryCollection = new CounterCreationDataCollection();
var counter1 = new CounterCreationData("RawCounter1", "", PerformanceCounterType.RawFraction);
var counter2 = new CounterCreationData("RawCounterBase1", "", PerformanceCounterType.RawBase);
categoryCollection.Add(counter1);
categoryCollection.Add(counter2);
PerformanceCounterCategory.Create(category, "", PerformanceCounterCategoryType.SingleInstance, categoryCollection);
// Wait and wait...
Thread.Sleep(TimeSpan.FromSeconds(3));
}
//create counters
mainCounter = new PerformanceCounter(category, "RawCounter1", false);
mainCounterBase = new PerformanceCounter(category, "RawCounterBase1", false);
//reset values
mainCounter.RawValue = 0;
mainCounterBase.RawValue = 0;
//update counter
mainCounter.IncrementBy(10);
mainCounterBase.IncrementBy(20);
**Console.WriteLine("Main counter: " +mainCounter.RawValue);//doesnt show value 50 the second time this is run**
Console.WriteLine("Main counter Base: " + mainCounterBase.RawValue);
Console.WriteLine("Main counter next value: " + mainCounter.NextValue());
Console.WriteLine("Main counter base next value: " + mainCounterBase.NextValue());
}