Export (0) Print
Expand All

PerformanceCounter.IncrementBy Method

Increments or decrements the value of the associated performance counter by a specified amount through an efficient atomic operation.

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

public long IncrementBy(
	long value
)

Parameters

value
Type: System.Int64

The value to increment by. (A negative value decrements the counter.)

Return Value

Type: System.Int64
The new counter value.

ExceptionCondition
InvalidOperationException

The counter is read-only, so the application cannot increment it.

-or-

The instance is not correctly associated with a performance counter.

-or-

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

Win32Exception

An error occurred when accessing a system API.

PlatformNotSupportedException

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

You can write only to custom counters. All system counters are read-only.

NoteNote

The Increment, IncrementBy, and 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 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.

NoteNote

If the value forthe 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.

The following code example demonstrates how to use the IncrementBy method to add increments to a counter. This code example is part of a larger example for the PerformanceCounter class.

	private static void CollectSamples(ArrayList samplesList)
	{
		
		Random r = new Random( DateTime.Now.Millisecond );

		// Loop for the samples. 
		for (int j = 0; j < 100; j++) 
		{
	        
			int value = r.Next(1, 10);
			Console.Write(j + " = " + value);

			avgCounter64Sample.IncrementBy(value);

			avgCounter64SampleBase.Increment();

			if ((j % 10) == 9) 
			{
				OutputSample(avgCounter64Sample.NextSample());
				samplesList.Add( avgCounter64Sample.NextSample() );
			}
			else
				Console.WriteLine();
	        
			System.Threading.Thread.Sleep(50);
		}

	}

.NET Framework

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

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Was this page helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft