InstanceDataCollectionCollection.Item[String] Property
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Gets the instance data for the specified counter.
public:
property System::Diagnostics::InstanceDataCollection ^ default[System::String ^] { System::Diagnostics::InstanceDataCollection ^ get(System::String ^ counterName); };
public System.Diagnostics.InstanceDataCollection this[string counterName] { get; }
member this.Item(string) : System.Diagnostics.InstanceDataCollection
Default Public ReadOnly Property Item(counterName As String) As InstanceDataCollection
Parameters
- counterName
- String
The name of the performance counter.
Property Value
An InstanceDataCollection item, by which the InstanceDataCollectionCollection object is indexed.
Exceptions
The counterName
parameter is null
.
Examples
The following code example accepts a PerformanceCounter category name and counter name from the command line. It gets the InstanceDataCollectionCollection for the PerformanceCounterCategory. Then, if the PerformanceCounter exists, the example uses the Item[] property (referenced as an indexer) to obtain the associated InstanceDataCollection and displays the instance names from the collection.
public static void Main(string[] args)
{
// The following values can be used as arguments.
string categoryName = "Process";
string counterName = "Private Bytes";
InstanceDataCollectionCollection idColCol;
// Copy the supplied arguments into the local variables.
try
{
categoryName = args[0];
counterName = args[1];
}
catch
{
// Ignore the exception from non-supplied arguments.
}
try
{
// Get the InstanceDataCollectionCollection for this category.
PerformanceCounterCategory pcc = new PerformanceCounterCategory(categoryName);
idColCol = pcc.ReadCategory();
}
catch(Exception ex)
{
Console.WriteLine("An error occurred getting the InstanceDataCollection for " +
"category \"{0}\"."+ "\n" +ex.Message, categoryName);
return;
}
// Check if this counter name exists using the Contains
// method of the InstanceDataCollectionCollection.
if (!idColCol.Contains(counterName))
{
Console.WriteLine("Counter \"{0}\" does not exist in category \"{1}\".", counterName, categoryName);
return;
}
else
{
// Now get the counter's InstanceDataCollection object using the
// indexer (Item property) for the InstanceDataCollectionCollection.
InstanceDataCollection countData = idColCol[counterName];
ICollection idColKeys = countData.Keys;
string[] idColKeysArray = new string[idColKeys.Count];
idColKeys.CopyTo(idColKeysArray, 0);
Console.WriteLine("Counter \"{0}\" of category \"{1}\" " +
"has {2} instances.", counterName, categoryName, idColKeys.Count);
// Display the instance names for this counter.
int index;
for(index=0; index<idColKeysArray.Length; index++)
{
Console.WriteLine("{0,4} -- {1}", index+1, idColKeysArray[index]);
}
}
}
Sub Main(ByVal args() As String)
Dim categoryName As String = ""
Dim counterName As String = ""
Dim idColCol As InstanceDataCollectionCollection
' Copy the supplied arguments into the local variables.
Try
categoryName = args(0)
counterName = args(1)
Catch ex As Exception
' Ignore the exception from non-supplied arguments.
End Try
Try
' Get the InstanceDataCollectionCollection for this category.
Dim pcc As New PerformanceCounterCategory(categoryName)
idColCol = pcc.ReadCategory()
Catch ex As Exception
Console.WriteLine( _
"An error occurred getting the InstanceDataCollection for " & _
"category ""{0}""." & vbCrLf & ex.Message, categoryName)
Return
End Try
' Check if this counter name exists using the Contains
' method of the InstanceDataCollectionCollection.
If Not idColCol.Contains(counterName) Then
Console.WriteLine( _
"Counter ""{0}"" does not exist in category ""{1}"".", _
counterName, categoryName)
Return
Else
' Now get the counter's InstanceDataCollection object using the
' indexer (Item property) for the InstanceDataCollectionCollection.
Dim countData As InstanceDataCollection = idColCol(counterName)
Dim idColKeys As ICollection = countData.Keys
Dim idColKeysArray(idColKeys.Count - 1) As String
idColKeys.CopyTo(idColKeysArray, 0)
Console.WriteLine("Counter ""{0}"" of category ""{1}"" " & _
"has {2} instances.", counterName, categoryName, idColKeys.Count)
' Display the instance names for this counter.
Dim index As Integer
For index = 0 To idColKeysArray.Length - 1
Console.WriteLine("{0,4} -- {1}", index + 1, idColKeysArray(index))
Next index
End If
End Sub
Remarks
The counterName
parameter is case-insensitive.
Each InstanceDataCollection object in the collection contains the performance data for all counters for an instance. The data is indexed by counter name and then by instance name. The indexer uses the counterName
parameter to step through the counters associated with this collection of instance data.