Export (0) Print
Expand All

InstanceDataCollectionCollection.Item Property

Gets the instance data for the specified counter.

Namespace:  System.Diagnostics
Assembly:  System (in System.dll)

public InstanceDataCollection this[
	string counterName
] { get; }

Parameters

counterName
Type: System.String

The name of the performance counter.

ExceptionCondition
ArgumentNullException

The counterName parameter is null.

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.

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]);
        }
    }
}

.NET Framework

Supported in: 4.6, 4.5, 4, 3.5, 3.0, 2.0, 1.1

.NET Framework Client Profile

Supported in: 4, 3.5 SP1
Show:
© 2015 Microsoft