PerformanceCounter.IncrementBy(Int64) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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.