PerformanceCounter.IncrementBy(Int64) Método

Definição

Incrementa ou diminui o valor do contador de desempenho associado numa quantidade especificada através 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 a incrementar. (Um valor negativo diminui o contador.)

Devoluções

O novo valor de contador.

Exceções

O contador é apenas de leitura, pelo que a aplicação não pode incrementá-lo.

-ou-

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

-ou-

A InstanceLifetime propriedade é definida para Process quando se utiliza memória partilhada global.

Ocorreu um erro ao aceder a uma API do sistema.

Exemplos

O exemplo de código seguinte 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 turma.

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

Observações

Só podes escrever em fichas personalizadas. Todos os contadores do sistema são apenas de leitura.

Note

Os Incrementmétodos , IncrementBy, e Decrement usam bloqueios para atualizar o valor do contador. Isto ajuda a manter o valor contador preciso em cenários multithreaded ou multiprocesso, mas também resulta numa penalização de desempenho. Se não precisar da precisão que as operações interligadas proporcionam, pode atualizar a RawValue propriedade diretamente para uma melhoria de desempenho até 5 vezes. No entanto, em cenários multithreaded, algumas atualizações ao valor contador podem ser ignoradas, resultando em dados imprecisos.

Note

Se o valor da propriedade InstanceLifetime for Process e a categoria contador de desempenho foi criada com .NET Framework versão 1.0 ou 1.1, é lançado um InvalidOperationException. As categorias de contadores de desempenho criadas com versões anteriores usam memória partilhada global, e o valor para InstanceLifetime deve ser Global. Se a categoria não for usada por aplicações a correr nas versões 1.0 ou 1.1 do .NET Framework, elimine e recrie a categoria.

Aplica-se a

Segurança de Thread

Este método é seguro para a linha.