System.Diagnostics.PerformanceCounter.RawValue Property

Gets or sets the raw, or uncalculated, value of this counter.

Syntax

[System.ComponentModel.Browsable(false)]
[System.ComponentModel.DesignerSerializationVisibility(System.ComponentModel.DesignerSerializationVisibility.Hidden)]
[System.Diagnostics.MonitoringDescription("The raw value of the counter.")]
public long RawValue { get; set; }

Value

Documentation for this section has not yet been entered.

Remarks

If the counter type is a 32-bit size and you attempt to set this property to a value that is too large to fit, the property truncates the value to 32 bits. When reading custom counters on the local computer, using the PerformanceCounter.RawValue property rather than a calculated value can produce significantly better performance in scenarios where the raw value is sufficient.

If the counter that you are reading is read-only, getting the PerformanceCounter.RawValue property samples the counter at the time that the property is called. This action is equivalent to making an initial call to the PerformanceCounter.NextSample method. If you subsequently call PerformanceCounter.NextSample, you can perform calculations on the values that both calls returned.

Because system counters are read-only, you can get but not set their raw values.

Note:

The PerformanceCounter.Increment, PerformanceCounter.IncrementBy(long), and PerformanceCounter.Decrement methods use interlocks to update the counter value. This helps keep the counter value accurate in multithreaded or multiprocess scenarios, but also results in a performance penalty. If you do not need the accuracy that interlocked operations provide, you can update the PerformanceCounter.RawValue property directly for up to a 5 times performance improvement. However, in multithreaded scenarios, some updates to the counter value might be ignored, resulting in inaccurate data.

Note:

If the value for the PerformanceCounter.InstanceLifetime property is PerformanceCounterInstanceLifetime.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 PerformanceCounter.InstanceLifetime must be PerformanceCounterInstanceLifetime.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.

Note:

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.

Requirements

Namespace: System.Diagnostics
Assembly: System (in System.dll)
Assembly Versions: 1.0.5000.0, 2.0.0.0, 4.0.0.0