PerformanceCounter.CounterType Property


The .NET API Reference documentation has a new home. Visit the .NET API Browser on to see the new experience.

Gets the counter type of the associated performance counter.

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

public PerformanceCounterType CounterType { get; }

Property Value

Type: System.Diagnostics.PerformanceCounterType

A PerformanceCounterType that describes both how the counter interacts with a monitoring application and the nature of the values it contains (for example, calculated or uncalculated).

Exception Condition

The instance is not correctly associated with a performance counter.


The InstanceLifetime property is set to Process when using global shared memory.


The platform is Windows 98 or Windows Millennium Edition (Me), which does not support performance counters.


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

The PerformanceCounterType enumeration contains the types of performance counters that you can interact with. Some of the counter types represent calculated values, such as the average of the counter measurements the system has taken. Other types represent raw, or uncalculated, values. The following table shows the counter types that you will interact with most frequently.

Counter's Responsibility

PerformanceCounterType Value


Maintain a simple count of items or operations.


Tracking the number of orders received as a 32-bit integer.

Maintain a higher-capacity simple count.


Tracking the number of orders for a site with very high volume, stored as a 64-bit integer.

Track the number of items or operations per second.


Tracking orders received per second on a site.

Track a higher-capacity number of items or operations per second.


Tracking orders received per second on a site with very high volume.

Calculate the average time to perform a process or to process an item


Calculate the average time an order takes to be processed.

When you create a counter whose type requires the use of a corresponding base counter, you must declare the counter and the base in the CounterCreationDataCollection you pass into the PerformanceCounterCategory.Create method.


If the value for the InstanceLifetime property is Process and the performance counter category was created with .NET Framework version 1.0 or 1.1, an InvalidOperationException is thrown. Performance counter categories created with earlier versions use global shared memory, and the value for InstanceLifetime must be Global. If the category is not used by applications running on versions 1.0 or 1.1 of the .NET Framework, delete and recreate the category.


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.


for reading the performance counter category. Associated enumeration: PerformanceCounterPermissionAccess.Read.

.NET Framework
Available since 1.1
Return to top