Compartir vía


PerformanceCounter.NextSample Método

Definición

Obtiene un contador de ejemplo y devuelve su valor sin formato o sin calcular.

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

Devoluciones

Objeto CounterSample que representa el siguiente valor sin formato que el sistema obtiene para este contador.

Excepciones

La instancia no está correctamente asociada a un contador de rendimiento.

o bien

La propiedad InstanceLifetime se ha establecido en Process pero se está usando la memoria compartida global.

Error de acceso a la API del sistema.

Código que se ejecuta sin privilegios administrativos para intentar leer un contador de rendimiento.

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar el NextSample método para obtener el siguiente valor sin calcular de un contador. Este ejemplo de código forma parte de un ejemplo más grande para la PerformanceCounter clase .

void CollectSamples( ArrayList^ samplesList, PerformanceCounter^ PC, PerformanceCounter^ BPC )
{
   Random^ r = gcnew Random( DateTime::Now.Millisecond );

   // Loop for the samples.
   for ( int j = 0; j < 100; j++ )
   {
      int value = r->Next( 1, 10 );
      Console::Write( "{0} = {1}", j, value );
      PC->IncrementBy( value );
      BPC->Increment();
      if ( (j % 10) == 9 )
      {
         OutputSample( PC->NextSample() );
         samplesList->Add( PC->NextSample() );
      }
      else
            Console::WriteLine();
      System::Threading::Thread::Sleep( 50 );
   }
}
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

Comentarios

Este método se usa generalmente para contadores que contienen valores no calculados.

Nota

Si el valor de la InstanceLifetime propiedad es Process y la categoría de contador de rendimiento se creó con .NET Framework versión 1.0 o 1.1, se produce una InvalidOperationException excepción . Las categorías de contadores de rendimiento creadas con versiones anteriores usan memoria compartida global y el valor de InstanceLifetime debe ser Global. Si las aplicaciones que se ejecutan en las versiones 1.0 o 1.1 de .NET Framework no usan la categoría, elimine y vuelva a crearla.

Nota

Para leer contadores de rendimiento en Windows Vista, Windows XP Professional x64 Edition o Windows Server 2003, debe ser miembro del grupo usuarios de Monitor de rendimiento o tener privilegios administrativos.

Para evitar tener que elevar los privilegios para acceder a los contadores de rendimiento en Windows Vista, agréguese al grupo Monitor de rendimiento Usuarios.

En Windows Vista, el control de cuentas de usuario (UAC) determina los privilegios de un usuario. Si es miembro del grupo Administradores integrados, se le asignarán dos símbolos (tokens) de acceso en tiempo de ejecución: un símbolo (token) de acceso de usuario estándar y un símbolo (token) de acceso de administrador. De forma predeterminada, se le asignará el rol de usuario estándar. Para ejecutar el código que accede a los contadores de rendimiento, primero debe elevar sus privilegios del usuario estándar al administrador. Para ello, inicie una aplicación haciendo clic con el botón derecho en el icono de la aplicación e indique que desea ejecutarla como administrador.

Se aplica a