CounterCreationDataCollection 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
강력한 형식의 CounterCreationData 개체 컬렉션을 제공합니다.
public ref class CounterCreationDataCollection : System::Collections::CollectionBase
public class CounterCreationDataCollection : System.Collections.CollectionBase
[System.Serializable]
public class CounterCreationDataCollection : System.Collections.CollectionBase
type CounterCreationDataCollection = class
inherit CollectionBase
[<System.Serializable>]
type CounterCreationDataCollection = class
inherit CollectionBase
Public Class CounterCreationDataCollection
Inherits CollectionBase
- 상속
- 특성
예제
다음 예제에서는 클래스를 사용하는 방법을 보여 줍니다 CounterCreationDataCollection . 이 예제에서는 클래스의 새 인스턴스를 만들고 여러 메서드를 사용하여 컬렉션에 문을 추가하고, 인덱스를 반환하고, 특정 인덱스 지점에서 특성을 추가하거나 제거합니다.
using System;
using System.Collections;
using System.Collections.Specialized;
using System.Diagnostics;
public class App
{
private static PerformanceCounter avgCounter64Sample;
private static PerformanceCounter avgCounter64SampleBase;
public static void Main()
{
ArrayList samplesList = new ArrayList();
// If the category does not exist, create the category and exit.
// Performance counters should not be created and immediately used.
// There is a latency time to enable the counters, they should be created
// prior to executing the application that uses the counters.
// Execute this sample a second time to use the category.
if (SetupCategory())
return;
CreateCounters();
CollectSamples(samplesList);
CalculateResults(samplesList);
}
private static bool SetupCategory()
{
if ( !PerformanceCounterCategory.Exists("AverageCounter64SampleCategory") )
{
CounterCreationDataCollection counterDataCollection = new CounterCreationDataCollection();
// Add the counter.
CounterCreationData averageCount64 = new CounterCreationData();
averageCount64.CounterType = PerformanceCounterType.AverageCount64;
averageCount64.CounterName = "AverageCounter64Sample";
counterDataCollection.Add(averageCount64);
// Add the base counter.
CounterCreationData averageCount64Base = new CounterCreationData();
averageCount64Base.CounterType = PerformanceCounterType.AverageBase;
averageCount64Base.CounterName = "AverageCounter64SampleBase";
counterDataCollection.Add(averageCount64Base);
// Create the category.
PerformanceCounterCategory.Create("AverageCounter64SampleCategory",
"Demonstrates usage of the AverageCounter64 performance counter type.",
PerformanceCounterCategoryType.SingleInstance, counterDataCollection);
return(true);
}
else
{
Console.WriteLine("Category exists - AverageCounter64SampleCategory");
return(false);
}
}
private static void CreateCounters()
{
// Create the counters.
avgCounter64Sample = new PerformanceCounter("AverageCounter64SampleCategory",
"AverageCounter64Sample",
false);
avgCounter64SampleBase = new PerformanceCounter("AverageCounter64SampleCategory",
"AverageCounter64SampleBase",
false);
avgCounter64Sample.RawValue=0;
avgCounter64SampleBase.RawValue=0;
}
private static void CollectSamples(ArrayList samplesList)
{
Random r = new Random( DateTime.Now.Millisecond );
// Loop for the samples.
for (int j = 0; j < 100; j++)
{
int value = r.Next(1, 10);
Console.Write(j + " = " + value);
avgCounter64Sample.IncrementBy(value);
avgCounter64SampleBase.Increment();
if ((j % 10) == 9)
{
OutputSample(avgCounter64Sample.NextSample());
samplesList.Add( avgCounter64Sample.NextSample() );
}
else
{
Console.WriteLine();
}
System.Threading.Thread.Sleep(50);
}
}
private static void CalculateResults(ArrayList samplesList)
{
for(int i = 0; i < (samplesList.Count - 1); i++)
{
// Output the sample.
OutputSample( (CounterSample)samplesList[i] );
OutputSample( (CounterSample)samplesList[i+1] );
// Use .NET to calculate the counter value.
Console.WriteLine(".NET computed counter value = " +
CounterSampleCalculator.ComputeCounterValue((CounterSample)samplesList[i],
(CounterSample)samplesList[i+1]) );
// Calculate the counter value manually.
Console.WriteLine("My computed counter value = " +
MyComputeCounterValue((CounterSample)samplesList[i],
(CounterSample)samplesList[i+1]) );
}
}
//++++++++//++++++++//++++++++//++++++++//++++++++//++++++++//++++++++//++++++++
// Description - This counter type shows how many items are processed, on average,
// during an operation. Counters of this type display a ratio of the items
// processed (such as bytes sent) to the number of operations completed. The
// ratio is calculated by comparing the number of items processed during the
// last interval to the number of operations completed during the last interval.
// Generic type - Average
// Formula - (N1 - N0) / (D1 - D0), where the numerator (N) represents the number
// of items processed during the last sample interval and the denominator (D)
// represents the number of operations completed during the last two sample
// intervals.
// Average (Nx - N0) / (Dx - D0)
// Example PhysicalDisk\ Avg. Disk Bytes/Transfer
//++++++++//++++++++//++++++++//++++++++//++++++++//++++++++//++++++++//++++++++
private static Single MyComputeCounterValue(CounterSample s0, CounterSample s1)
{
Single numerator = (Single)s1.RawValue - (Single)s0.RawValue;
Single denomenator = (Single)s1.BaseValue - (Single)s0.BaseValue;
Single counterValue = numerator / denomenator;
return(counterValue);
}
// Output information about the counter sample.
private static void OutputSample(CounterSample s)
{
Console.WriteLine("\r\n+++++++++++");
Console.WriteLine("Sample values - \r\n");
Console.WriteLine(" BaseValue = " + s.BaseValue);
Console.WriteLine(" CounterFrequency = " + s.CounterFrequency);
Console.WriteLine(" CounterTimeStamp = " + s.CounterTimeStamp);
Console.WriteLine(" CounterType = " + s.CounterType);
Console.WriteLine(" RawValue = " + s.RawValue);
Console.WriteLine(" SystemFrequency = " + s.SystemFrequency);
Console.WriteLine(" TimeStamp = " + s.TimeStamp);
Console.WriteLine(" TimeStamp100nSec = " + s.TimeStamp100nSec);
Console.WriteLine("++++++++++++++++++++++");
}
}
Imports System.Collections
Imports System.Collections.Specialized
Imports System.Diagnostics
_
Public Class App
Private Shared avgCounter64Sample As PerformanceCounter
Private Shared avgCounter64SampleBase As PerformanceCounter
Public Shared Sub Main()
Dim samplesList As New ArrayList()
'If the category does not exist, create the category and exit.
'Performance counters should not be created and immediately used.
'There is a latency time to enable the counters, they should be created
'prior to executing the application that uses the counters.
'Execute this sample a second time to use the counters.
If Not (SetupCategory()) Then
CreateCounters()
CollectSamples(samplesList)
CalculateResults(samplesList)
End If
End Sub
Private Shared Function SetupCategory() As Boolean
If Not PerformanceCounterCategory.Exists("AverageCounter64SampleCategory") Then
Dim counterDataCollection As New CounterCreationDataCollection()
' Add the counter.
Dim averageCount64 As New CounterCreationData()
averageCount64.CounterType = PerformanceCounterType.AverageCount64
averageCount64.CounterName = "AverageCounter64Sample"
counterDataCollection.Add(averageCount64)
' Add the base counter.
Dim averageCount64Base As New CounterCreationData()
averageCount64Base.CounterType = PerformanceCounterType.AverageBase
averageCount64Base.CounterName = "AverageCounter64SampleBase"
counterDataCollection.Add(averageCount64Base)
' Create the category.
PerformanceCounterCategory.Create("AverageCounter64SampleCategory", _
"Demonstrates usage of the AverageCounter64 performance counter type.", _
PerformanceCounterCategoryType.SingleInstance, counterDataCollection)
Return True
Else
Console.WriteLine("Category exists - AverageCounter64SampleCategory")
Return False
End If
End Function 'SetupCategory
Private Shared Sub CreateCounters()
' Create the counters.
avgCounter64Sample = New PerformanceCounter("AverageCounter64SampleCategory", "AverageCounter64Sample", False)
avgCounter64SampleBase = New PerformanceCounter("AverageCounter64SampleCategory", "AverageCounter64SampleBase", False)
avgCounter64Sample.RawValue = 0
avgCounter64SampleBase.RawValue = 0
End Sub
Private Shared Sub CollectSamples(ByVal samplesList As ArrayList)
Dim r As New Random(DateTime.Now.Millisecond)
' Loop for the samples.
Dim j As Integer
For j = 0 To 99
Dim value As Integer = r.Next(1, 10)
Console.Write(j.ToString() + " = " + value.ToString())
avgCounter64Sample.IncrementBy(value)
avgCounter64SampleBase.Increment()
If j Mod 10 = 9 Then
OutputSample(avgCounter64Sample.NextSample())
samplesList.Add(avgCounter64Sample.NextSample())
Else
Console.WriteLine()
End If
System.Threading.Thread.Sleep(50)
Next j
End Sub
Private Shared Sub CalculateResults(ByVal samplesList As ArrayList)
Dim i As Integer
For i = 0 To (samplesList.Count - 1) - 1
' Output the sample.
OutputSample(CType(samplesList(i), CounterSample))
OutputSample(CType(samplesList((i + 1)), CounterSample))
' Use .NET to calculate the counter value.
Console.WriteLine(".NET computed counter value = " + CounterSampleCalculator.ComputeCounterValue(CType(samplesList(i), CounterSample), CType(samplesList((i + 1)), CounterSample)).ToString())
' Calculate the counter value manually.
Console.WriteLine("My computed counter value = " + MyComputeCounterValue(CType(samplesList(i), CounterSample), CType(samplesList((i + 1)), CounterSample)).ToString())
Next i
End Sub
'++++++++//++++++++//++++++++//++++++++//++++++++//++++++++//++++++++//++++++++
' Description - This counter type shows how many items are processed, on average,
' during an operation. Counters of this type display a ratio of the items
' processed (such as bytes sent) to the number of operations completed. The
' ratio is calculated by comparing the number of items processed during the
' last interval to the number of operations completed during the last interval.
' Generic type - Average
' Formula - (N1 - N0) / (D1 - D0), where the numerator (N) represents the number
' of items processed during the last sample interval and the denominator (D)
' represents the number of operations completed during the last two sample
' intervals.
' Average (Nx - N0) / (Dx - D0)
' Example PhysicalDisk\ Avg. Disk Bytes/Transfer
'++++++++//++++++++//++++++++//++++++++//++++++++//++++++++//++++++++//++++++++
Private Shared Function MyComputeCounterValue(ByVal s0 As CounterSample, ByVal s1 As CounterSample) As [Single]
Dim numerator As [Single] = CType(s1.RawValue, [Single]) - CType(s0.RawValue, [Single])
Dim denomenator As [Single] = CType(s1.BaseValue, [Single]) - CType(s0.BaseValue, [Single])
Dim counterValue As [Single] = numerator / denomenator
Return counterValue
End Function 'MyComputeCounterValue
' Output information about the counter sample.
Private Shared Sub OutputSample(ByVal s As CounterSample)
Console.WriteLine(ControlChars.Lf + ControlChars.Cr + "+++++++++++")
Console.WriteLine("Sample values - " + ControlChars.Lf + ControlChars.Cr)
Console.WriteLine((" BaseValue = " + s.BaseValue.ToString()))
Console.WriteLine((" CounterFrequency = " + s.CounterFrequency.ToString()))
Console.WriteLine((" CounterTimeStamp = " + s.CounterTimeStamp.ToString()))
Console.WriteLine((" CounterType = " + s.CounterType.ToString()))
Console.WriteLine((" RawValue = " + s.RawValue.ToString()))
Console.WriteLine((" SystemFrequency = " + s.SystemFrequency.ToString()))
Console.WriteLine((" TimeStamp = " + s.TimeStamp.ToString()))
Console.WriteLine((" TimeStamp100nSec = " + s.TimeStamp100nSec.ToString()))
Console.WriteLine("++++++++++++++++++++++")
End Sub
End Class
생성자
| Name | Description |
|---|---|
| CounterCreationDataCollection() |
연결된 인스턴스 없이 클래스의 CounterCreationDataCollection 새 인스턴스를 CounterCreationData 초기화합니다. |
| CounterCreationDataCollection(CounterCreationData[]) |
지정된 인스턴스 배열을 CounterCreationDataCollection 사용하여 클래스의 CounterCreationData 새 인스턴스를 초기화합니다. |
| CounterCreationDataCollection(CounterCreationDataCollection) |
지정된 인스턴스 컬렉션을 사용하여 클래스의 CounterCreationDataCollectionCounterCreationData 새 인스턴스를 초기화합니다. |
속성
| Name | Description |
|---|---|
| Capacity |
포함할 수 있는 CollectionBase 요소의 수를 가져오거나 설정합니다. (다음에서 상속됨 CollectionBase) |
| Count |
인스턴스에 포함된 CollectionBase 요소 수를 가져옵니다. 이 속성은 재정의할 수 없습니다. (다음에서 상속됨 CollectionBase) |
| InnerList |
인스턴스의 ArrayList 요소 CollectionBase 목록을 포함하는 항목을 가져옵니다. (다음에서 상속됨 CollectionBase) |
| Item[Int32] |
컬렉션을 인덱싱합니다 CounterCreationData . |
| List |
인스턴스의 IList 요소 CollectionBase 목록을 포함하는 항목을 가져옵니다. (다음에서 상속됨 CollectionBase) |
메서드
| Name | Description |
|---|---|
| Add(CounterCreationData) |
컬렉션에 클래스의 CounterCreationData 인스턴스를 추가합니다. |
| AddRange(CounterCreationData[]) |
컬렉션에 지정된 인스턴스 배열 CounterCreationData 을 추가합니다. |
| AddRange(CounterCreationDataCollection) |
지정된 인스턴스 컬렉션을 컬렉션 CounterCreationData 에 추가합니다. |
| Clear() |
인스턴스에서 모든 개체를 CollectionBase 제거합니다. 이 메서드는 재정의할 수 없습니다. (다음에서 상속됨 CollectionBase) |
| Contains(CounterCreationData) |
인스턴스가 컬렉션에 CounterCreationData 있는지 여부를 확인합니다. |
| CopyTo(CounterCreationData[], Int32) |
배열의 CounterCreationData 지정된 인덱스에서 시작하여 배열의 요소를 복사합니다. |
| Equals(Object) |
지정된 개체가 현재 개체와 같은지 여부를 확인합니다. (다음에서 상속됨 Object) |
| GetEnumerator() |
인스턴스를 반복하는 열거자를 반환합니다 CollectionBase . (다음에서 상속됨 CollectionBase) |
| GetHashCode() |
기본 해시 함수로 사용됩니다. (다음에서 상속됨 Object) |
| GetType() |
현재 인스턴스의 Type 가져옵니다. (다음에서 상속됨 Object) |
| IndexOf(CounterCreationData) |
컬렉션에 있는 CounterCreationData 개체의 인덱스 값을 반환합니다. |
| Insert(Int32, CounterCreationData) |
지정된 인덱스의 CounterCreationData 컬렉션에 개체를 삽입합니다. |
| MemberwiseClone() |
현재 Object단순 복사본을 만듭니다. (다음에서 상속됨 Object) |
| OnClear() |
인스턴스의 CollectionBase 내용을 지울 때 추가 사용자 지정 프로세스를 수행합니다. (다음에서 상속됨 CollectionBase) |
| OnClearComplete() |
인스턴스의 CollectionBase 내용을 지워서 추가 사용자 지정 프로세스를 수행합니다. (다음에서 상속됨 CollectionBase) |
| OnInsert(Int32, Object) |
이 API는 제품 인프라를 지원하며 코드에서 직접 사용되지 않습니다. 컬렉션에 새 데이터 항목을 삽입하기 전에 추가 사용자 지정 프로세스를 수행합니다. |
| OnInsert(Int32, Object) |
인스턴스에 새 요소를 CollectionBase 삽입하기 전에 추가 사용자 지정 프로세스를 수행합니다. (다음에서 상속됨 CollectionBase) |
| OnInsertComplete(Int32, Object) |
인스턴스에 새 요소를 CollectionBase 삽입한 후 추가 사용자 지정 프로세스를 수행합니다. (다음에서 상속됨 CollectionBase) |
| OnRemove(Int32, Object) |
인스턴스에서 CollectionBase 요소를 제거할 때 추가 사용자 지정 프로세스를 수행합니다. (다음에서 상속됨 CollectionBase) |
| OnRemoveComplete(Int32, Object) |
인스턴스에서 CollectionBase 요소를 제거한 후 추가 사용자 지정 프로세스를 수행합니다. (다음에서 상속됨 CollectionBase) |
| OnSet(Int32, Object, Object) |
인스턴스에서 CollectionBase 값을 설정하기 전에 추가 사용자 지정 프로세스를 수행합니다. (다음에서 상속됨 CollectionBase) |
| OnSetComplete(Int32, Object, Object) |
인스턴스에서 CollectionBase 값을 설정한 후 추가 사용자 지정 프로세스를 수행합니다. (다음에서 상속됨 CollectionBase) |
| OnValidate(Object) |
지정한 개체를 검사하여 유효한 CounterCreationData 형식인지 확인합니다. |
| OnValidate(Object) |
값의 유효성을 검사할 때 추가 사용자 지정 프로세스를 수행합니다. (다음에서 상속됨 CollectionBase) |
| Remove(CounterCreationData) |
CounterCreationData 컬렉션에서 개체를 제거합니다. |
| RemoveAt(Int32) |
인스턴스의 지정된 인덱스에 있는 요소를 제거합니다 CollectionBase . 이 메서드는 재정의할 수 없습니다. (다음에서 상속됨 CollectionBase) |
| ToString() |
현재 개체를 나타내는 문자열을 반환합니다. (다음에서 상속됨 Object) |
명시적 인터페이스 구현
확장명 메서드
| Name | Description |
|---|---|
| AsParallel(IEnumerable) |
쿼리의 병렬 처리를 사용하도록 설정합니다. |
| AsQueryable(IEnumerable) |
IEnumerable IQueryable변환합니다. |
| Cast<TResult>(IEnumerable) |
IEnumerable 요소를 지정된 형식으로 캐스팅합니다. |
| OfType<TResult>(IEnumerable) |
지정된 형식에 따라 IEnumerable 요소를 필터링합니다. |