This documentation is archived and is not being maintained.

PerformanceCounterCategory.ReadCategory Method

Reads all the counter and performance object instance data that is associated with this performance counter category.

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

public InstanceDataCollectionCollection ReadCategory ()
public InstanceDataCollectionCollection ReadCategory ()
public function ReadCategory () : InstanceDataCollectionCollection
Not applicable.

Return Value

An InstanceDataCollectionCollection that contains the counter and performance object instance data for the category.

Exception typeCondition


The CategoryName property is a null reference (Nothing in Visual Basic). The property might not have been set.


A call to an underlying system API failed.


Code that is executing without administrative privileges attempted to read a performance counter.

You must set the CategoryName property before you call ReadCategory.

Reading the entire category at once can be as efficient as reading a single counter because of the way that the system provides the data.


To read performance counters in Windows Vista, Windows XP Professional x64 Edition, or Windows Server 2003, you must either be a member of the Performance Monitor Users group or have administrative privileges.

To avoid having to elevate your privileges to access performance counters in Windows Vista, add yourself to the Performance Monitor Users group.

In Windows Vista, User Account Control (UAC) determines the privileges of a user. If you are a member of the Built-in Administrators group, you are assigned two run-time access tokens: a standard user access token and an administrator access token. By default, you are in the standard user role. To execute the code that accesses performance counters, you must first elevate your privileges from standard user to administrator. You can do this when you start an application by right-clicking the application icon and indicating that you want to run as an administrator.

The following code example creates a PerformanceCounterCategory for a specified PerformanceCounterCategory name. It then uses ReadCategory to return an InstanceDataCollectionCollection that contains instance data for all the instances of the PerformanceCounter objects within the PerformanceCounterCategory.

// Process the InstanceDataCollectionCollection for this category.
PerformanceCounterCategory pcc = new PerformanceCounterCategory(categoryName);
InstanceDataCollectionCollection idColCol = pcc.ReadCategory();
InstanceDataCollection[] idColArray = new InstanceDataCollection[idColCol.Count];

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

Windows 98, Windows Server 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.

.NET Framework

Supported in: 3.0, 2.0, 1.1, 1.0