1

1 つのアプリケーション (.exe) で 2 つの AverageTimer32 パフォーマンス カウンターを定義して使用するにはどうすればよいですか?

追記事項: 操作のさまざまな部分に費やされた時間を測定しようとしています。

AverageTimer32 パフォーマンス カウンターと AverageBase があります。できます。

次に、2 つ目の AverageTimer32 パフォーマンス カウンターを追加します。別の AverageBase カウンターを追加しても機能しません。私は何かについて間違っていると思います。コードサンプルは本当にありがたいです。

これは、コードのさまざまな部分です。

_AverageDuration = new PerformanceCounter();
_AverageDuration.CategoryName = CategoryName;
_AverageDuration.CounterName = "average time per operation";
_AverageDuration.MachineName = ".";
_AverageDuration.ReadOnly = false;

_AverageDurationBase = new PerformanceCounter();
_AverageDurationBase.CategoryName = CategoryName;
_AverageDurationBase.CounterName = "average time per operation base";
_AverageDurationBase.MachineName = ".";
_AverageDurationBase.ReadOnly = false;
...
CounterCreationDataCollection counters = new CounterCreationDataCollection();
...
CounterCreationData avgDuration = new CounterCreationData();
avgDuration.CounterName = "average time per operation";
avgDuration.CounterHelp = "Average duration per operation execution";
avgDuration.CounterType = PerformanceCounterType.AverageTimer32;
counters.Add(avgDuration);

CounterCreationData avgDurationBase = new CounterCreationData();
avgDurationBase.CounterName = "average time per operation base";
avgDurationBase.CounterHelp = "Average duration per operation execution base";
avgDurationBase.CounterType = PerformanceCounterType.AverageBase;
counters.Add(avgDurationBase);
...
PerformanceCounterCategory.Create(CategoryName, "Category for Receiver", PerformanceCounterCategoryType.Unknown, counters);
...
AverageDuration.IncrementBy(performanceCounterwatch.ElapsedTicks);
AverageDurationBase.Increment();
4

1 に答える 1

3

それらを追加する順序は重要です。平均、それに対応するベース、2 番目の平均、2 番目の対応するベースを追加する必要があります。

于 2012-07-01T10:21:10.887 に答える