Compartilhar via


PerformanceCounter.NextSample Método

Definição

Obtém um exemplo de contador e retorna o valor bruto ou não calculado para ele.

public:
 System::Diagnostics::CounterSample NextSample();
public System.Diagnostics.CounterSample NextSample();
member this.NextSample : unit -> System.Diagnostics.CounterSample
Public Function NextSample () As CounterSample

Retornos

Um CounterSample que representa o próximo valor bruto que o sistema obtém para esse contador.

Exceções

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.

Código que está sendo executado sem privilégios administrativos tentou ler um contador de desempenho.

Exemplos

O exemplo de código a seguir demonstra como usar o NextSample método para obter o próximo valor não calculado de 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

Esse método geralmente é usado para contadores que contêm valores não calculados.

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.

Observação

Para ler contadores de desempenho no Windows Vista, Windows XP Professional x64 Edition ou Windows Server 2003, você deve ser membro do grupo Usuários do Monitor de Desempenho ou ter privilégios administrativos.

Para evitar ter que elevar seus privilégios para acessar contadores de desempenho no Windows Vista, adicione-se ao grupo Usuários do Monitor de Desempenho.

No Windows Vista, o UAC (Controle de Conta de Usuário) determina os privilégios de um usuário. Se você for membro do grupo Administradores Internos, será atribuído dois tokens de acesso em tempo de execução: um token de acesso de usuário padrão e um token de acesso de administrador. Por padrão, você está na função de usuário padrão. Para executar o código que acessa contadores de desempenho, primeiro você deve elevar seus privilégios de usuário padrão para administrador. Você pode fazer isso ao iniciar um aplicativo clicando com o botão direito do mouse no ícone do aplicativo e indicando que deseja executar como administrador.

Aplica-se a