PerformanceCounter.IncrementBy(Int64) Метод

Определение

Увеличивает или уменьшает значение связанного счетчика производительности по заданному количеству с помощью эффективной атомарной операции.

public:
 long IncrementBy(long value);
public long IncrementBy(long value);
member this.IncrementBy : int64 -> int64
Public Function IncrementBy (value As Long) As Long

Параметры

value
Int64

Значение для увеличения. (Отрицательное значение уменьшает счетчик.)

Возвращаемое значение

Новое значение счетчика.

Исключения

Счетчик доступен только для чтения, поэтому приложение не может увеличить его.

–или–

Экземпляр неправильно связан с счетчиком производительности.

–или–

Для InstanceLifetime свойства задано Process значение при использовании глобальной общей памяти.

Ошибка при доступе к системным API.

Примеры

В следующем примере кода показано, как использовать IncrementBy метод для добавления добавок в счетчик. Этот пример кода является частью более крупного примера для PerformanceCounter класса.

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);
    }
}
Private Shared Sub CollectSamples(ByVal samplesList As ArrayList)

    Dim r As New Random(DateTime.Now.Millisecond)

    ' Loop for the samples.
    Dim j As Integer
    For j = 0 To 99

        Dim value As Integer = r.Next(1, 10)
        Console.Write(j.ToString() + " = " + value.ToString())

        avgCounter64Sample.IncrementBy(value)

        avgCounter64SampleBase.Increment()

        If j Mod 10 = 9 Then
            OutputSample(avgCounter64Sample.NextSample())
            samplesList.Add(avgCounter64Sample.NextSample())
        Else
            Console.WriteLine()
        End If
        System.Threading.Thread.Sleep(50)
    Next j
End Sub

Комментарии

Вы можете записывать только пользовательские счетчики. Все системные счетчики доступны только для чтения.

Замечание

IncrementByМетоды Incrementи Decrement методы используют взаимоблокировки для обновления значения счетчика. Это помогает обеспечить точность счетчика в многопоточных или многопроцессных сценариях, но также приводит к штрафу производительности. Если вам не нужна точность, которая обеспечивает заблокированные операции, можно обновить RawValue свойство непосредственно до 5 раз. Однако в многопоточных сценариях некоторые обновления значения счетчика могут игнорироваться, что приводит к неточным данным.

Замечание

Если для свойства задано Process значение InstanceLifetime и категория счетчика производительности была создана с помощью .NET Framework версии 1.0 или 1.1, InvalidOperationException создается исключение. Категории счетчиков производительности, созданные с использованием предыдущих версий, используют глобальную общую память, а значение InstanceLifetime должно быть Global. Если категория не используется приложениями, работающими в версиях 1.0 или 1.1 платформы .NET Framework, удалите и повторно создайте категорию.

Применяется к

Потокобезопасность

Этот метод является потокобезопасной.