Partilhar via


PerformanceCounter.IncrementBy(Int64) Método

Definição

Incrementa ou decrementa o valor do contador de desempenho associado por uma quantidade especificada por meio de uma operação atômica eficiente.

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

Parâmetros

value
Int64

O valor pelo qual incrementar. (Um valor negativo diminui o contador.)

Retornos

O novo valor do contador.

Exceções

O contador é somente leitura, portanto, o aplicativo não pode incrementá-lo.

- ou -

A instância não está corretamente associada a um contador de desempenho.

- ou -

A InstanceLifetime propriedade é definida ao usar memória Process compartilhada global.

Ocorreu um erro ao acessar uma API do sistema.

Exemplos

O exemplo de código a seguir demonstra como usar o IncrementBy método para adicionar incrementos a um contador. Este exemplo de código faz parte de um exemplo maior para a PerformanceCounter classe.

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

Comentários

Você só pode escrever em contadores personalizados. Todos os contadores do sistema são somente leitura.

Observação

Os Incrementmétodos e Decrement os IncrementBymétodos usam intertravamentos para atualizar o valor do contador. Isso ajuda a manter o valor do contador preciso em cenários multithreaded ou multiprocessos, mas também resulta em uma penalidade de desempenho. Se você não precisar da precisão que as operações intertravadas fornecem, você poderá atualizar a RawValue propriedade diretamente para uma melhoria de desempenho de até cinco vezes. No entanto, em cenários multithreaded, algumas atualizações no valor do contador podem ser ignoradas, resultando em dados imprecisos.

Observação

Se o valor da InstanceLifetime propriedade for Process e a categoria de contador de desempenho tiver sido criada com o .NET Framework versão 1.0 ou 1.1, será gerada uma InvalidOperationException . As categorias de contador de desempenho criadas com versões anteriores usam memória compartilhada global e o valor deve InstanceLifetime ser Global. Se a categoria não for usada por aplicativos em execução nas versões 1.0 ou 1.1 do .NET Framework, exclua e recrie a categoria.

Aplica-se a

Acesso thread-safe

Esse método é thread safe.