This topic has not yet been rated - Rate this topic

InstanceDataCollectionCollection Class

Provides a strongly typed collection of InstanceDataCollection objects.

System.Object
  System.Collections.DictionaryBase
    System.Diagnostics.InstanceDataCollectionCollection

Namespace:  System.Diagnostics
Assembly:  System (in System.dll)
public class InstanceDataCollectionCollection : DictionaryBase

The InstanceDataCollectionCollection type exposes the following members.

  Name Description
Public method InstanceDataCollectionCollection Obsolete. Initializes a new instance of the InstanceDataCollectionCollection class.
Top
  Name Description
Public property Count Gets the number of elements contained in the DictionaryBase instance. (Inherited from DictionaryBase.)
Protected property Dictionary Gets the list of elements contained in the DictionaryBase instance. (Inherited from DictionaryBase.)
Protected property InnerHashtable Gets the list of elements contained in the DictionaryBase instance. (Inherited from DictionaryBase.)
Public property Item Gets the instance data for the specified counter.
Public property Keys Gets the object and counter registry keys for the objects associated with this instance data collection.
Public property Values Gets the instance data values that comprise the collection of instances for the counter.
Top
  Name Description
Public method Clear Clears the contents of the DictionaryBase instance. (Inherited from DictionaryBase.)
Public method Contains Determines whether an instance data collection for the specified counter (identified by one of the indexed InstanceDataCollection objects) exists in the collection.
Public method CopyTo(Array, Int32) Copies the DictionaryBase elements to a one-dimensional Array at the specified index. (Inherited from DictionaryBase.)
Public method CopyTo(InstanceDataCollection[], Int32) Copies an array of InstanceDataCollection instances to the collection, at the specified index.
Public method Equals(Object) Determines whether the specified Object is equal to the current Object. (Inherited from Object.)
Protected method Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public method GetEnumerator Returns an IDictionaryEnumerator that iterates through the DictionaryBase instance. (Inherited from DictionaryBase.)
Public method GetHashCode Serves as a hash function for a particular type. (Inherited from Object.)
Public method GetType Gets the Type of the current instance. (Inherited from Object.)
Protected method MemberwiseClone Creates a shallow copy of the current Object. (Inherited from Object.)
Protected method OnClear Performs additional custom processes before clearing the contents of the DictionaryBase instance. (Inherited from DictionaryBase.)
Protected method OnClearComplete Performs additional custom processes after clearing the contents of the DictionaryBase instance. (Inherited from DictionaryBase.)
Protected method OnGet Gets the element with the specified key and value in the DictionaryBase instance. (Inherited from DictionaryBase.)
Protected method OnInsert Performs additional custom processes before inserting a new element into the DictionaryBase instance. (Inherited from DictionaryBase.)
Protected method OnInsertComplete Performs additional custom processes after inserting a new element into the DictionaryBase instance. (Inherited from DictionaryBase.)
Protected method OnRemove Performs additional custom processes before removing an element from the DictionaryBase instance. (Inherited from DictionaryBase.)
Protected method OnRemoveComplete Performs additional custom processes after removing an element from the DictionaryBase instance. (Inherited from DictionaryBase.)
Protected method OnSet Performs additional custom processes before setting a value in the DictionaryBase instance. (Inherited from DictionaryBase.)
Protected method OnSetComplete Performs additional custom processes after setting a value in the DictionaryBase instance. (Inherited from DictionaryBase.)
Protected method OnValidate Performs additional custom processes when validating the element with the specified key and value. (Inherited from DictionaryBase.)
Public method ToString Returns a string that represents the current object. (Inherited from Object.)
Top
  Name Description
Explicit interface implemetation Private property ICollection.IsSynchronized Gets a value indicating whether access to a DictionaryBase object is synchronized (thread safe). (Inherited from DictionaryBase.)
Explicit interface implemetation Private property ICollection.SyncRoot Gets an object that can be used to synchronize access to a DictionaryBase object. (Inherited from DictionaryBase.)
Explicit interface implemetation Private method IDictionary.Add Adds an element with the specified key and value into the DictionaryBase. (Inherited from DictionaryBase.)
Explicit interface implemetation Private method IDictionary.Contains Determines whether the DictionaryBase contains a specific key. (Inherited from DictionaryBase.)
Explicit interface implemetation Private property IDictionary.IsFixedSize Gets a value indicating whether a DictionaryBase object has a fixed size. (Inherited from DictionaryBase.)
Explicit interface implemetation Private property IDictionary.IsReadOnly Gets a value indicating whether a DictionaryBase object is read-only. (Inherited from DictionaryBase.)
Explicit interface implemetation Private property IDictionary.Item Gets or sets the value associated with the specified key. (Inherited from DictionaryBase.)
Explicit interface implemetation Private property IDictionary.Keys Gets an ICollection object containing the keys in the DictionaryBase object. (Inherited from DictionaryBase.)
Explicit interface implemetation Private method IDictionary.Remove Removes the element with the specified key from the DictionaryBase. (Inherited from DictionaryBase.)
Explicit interface implemetation Private property IDictionary.Values Gets an ICollection object containing the values in the DictionaryBase object. (Inherited from DictionaryBase.)
Explicit interface implemetation Private method IEnumerable.GetEnumerator Returns an IEnumerator that iterates through the DictionaryBase. (Inherited from DictionaryBase.)
Top

The InstanceDataCollectionCollection class represents the collection returned from the ReadCategory method. This collection contains all the counter and instance data. The collection contains an InstanceDataCollection object for each counter. Each InstanceDataCollection object contains the performance data for all counters for that instance. Thus, the data is indexed by counter name and then by instance name.

The following code example displays the instance data for a particular PerformanceCounterCategory on the local computer. It first displays a numbered list of PerformanceCounterCategory names. After the user enters the number of one of the categories, the example gets the InstanceDataCollectionCollection for that PerformanceCounterCategory. It then converts the collection returned by the Values property to an array of InstanceDataCollection objects. The example displays the instance data associated with each InstanceData of each InstanceDataCollection.


using System;
using System.Diagnostics;
using System.Collections;

class InstDataKeysValuesMod
{

    private static string categoryName;

    public static void Main()
    {
        string catNumStr;
        int categoryNum;

        PerformanceCounterCategory[] categories = PerformanceCounterCategory.GetCategories();

        Console.WriteLine("These categories are registered on this computer:");

        int catX;
        for(catX=0; catX<categories.Length; catX++)
        {
            Console.WriteLine("{0,4} - {1}", catX+1, categories[catX].CategoryName);
        }

        // Ask the user to choose a category.
        Console.Write("Enter the category number from the above list: ");
        catNumStr = Console.ReadLine();

        // Validate the entered category number.
        try
        {
            categoryNum = int.Parse(catNumStr);
            if (categoryNum<1||categoryNum>categories.Length)
            {
                throw new Exception(String.Format("The category number must be in the " +
                    "range 1..{0}.", categories.Length));
            }
            categoryName = categories[(categoryNum - 1)].CategoryName;

        }
        catch(Exception ex)
        {
            Console.WriteLine("\"{0}\" is not a valid category number." +
                "\r\n{1}", catNumStr, ex.Message);
            return;
        }

        // Process the InstanceDataCollectionCollection for this category.
        PerformanceCounterCategory pcc = new PerformanceCounterCategory(categoryName);
        InstanceDataCollectionCollection idColCol = pcc.ReadCategory();

        ICollection idColColKeys = idColCol.Keys;
        string[] idCCKeysArray = new string[idColColKeys.Count];
        idColColKeys.CopyTo(idCCKeysArray, 0);

        ICollection idColColValues = idColCol.Values;
        InstanceDataCollection[] idCCValuesArray = new InstanceDataCollection[idColColValues.Count];
        idColColValues.CopyTo(idCCValuesArray, 0);

        Console.WriteLine("InstanceDataCollectionCollection for \"{0}\" " +
            "has {1} elements.", categoryName, idColCol.Count);

        // Display the InstanceDataCollectionCollection Keys and Values.
        // The Keys and Values collections have the same number of elements.
        int index;
        for(index=0; index<idCCKeysArray.Length; index++)
        {
            Console.WriteLine("  Next InstanceDataCollectionCollection " +
                "Key is \"{0}\"", idCCKeysArray[index]);
            ProcessInstanceDataCollection(idCCValuesArray[index]);
        }
    }

    // Display the contents of an InstanceDataCollection.
    public static void ProcessInstanceDataCollection(InstanceDataCollection idCol)
    {

        ICollection idColKeys = idCol.Keys;
        string[] idColKeysArray = new string[idColKeys.Count];
        idColKeys.CopyTo(idColKeysArray, 0);

        ICollection idColValues = idCol.Values;
        InstanceData[] idColValuesArray = new InstanceData[idColValues.Count];
        idColValues.CopyTo(idColValuesArray, 0);

        Console.WriteLine("  InstanceDataCollection for \"{0}\" " +
            "has {1} elements.", idCol.CounterName, idCol.Count);

        // Display the InstanceDataCollection Keys and Values.
        // The Keys and Values collections have the same number of elements.
        int index;
        for(index=0; index<idColKeysArray.Length; index++)
        {
            Console.WriteLine("    Next InstanceDataCollection " +
                "Key is \"{0}\"", idColKeysArray[index]);
            ProcessInstanceDataObject(idColValuesArray[index]);
        }
    }

    // Display the contents of an InstanceData object.
    public static void ProcessInstanceDataObject(InstanceData instData)
    {
        CounterSample sample = instData.Sample;

        Console.WriteLine("    From InstanceData:\r\n      " +
            "InstanceName: {0,-31} RawValue: {1}", instData.InstanceName, instData.Sample.RawValue);
        Console.WriteLine("    From CounterSample:\r\n      " +
            "CounterType: {0,-32} SystemFrequency: {1}\r\n" +
            "      BaseValue: {2,-34} RawValue: {3}\r\n" +
            "      CounterFrequency: {4,-27} CounterTimeStamp: {5}\r\n" +
            "      TimeStamp: {6,-34} TimeStamp100nSec: {7}", sample.CounterType, sample.SystemFrequency, sample.BaseValue, sample.RawValue, sample.CounterFrequency, sample.CounterTimeStamp, sample.TimeStamp, sample.TimeStamp100nSec);
    }
}


.NET Framework

Supported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ