Procedura: recuperare campioni del contatore delle prestazioni

Aggiornamento: novembre 2007

È possibile utilizzare la classe CounterSample per creare campioni ed eseguire calcoli sui rispettivi contenuti. Una classe per campioni esegue il "campionamento" di un contatore delle prestazioni in base ai criteri definiti. Tali criteri comprendono i valori di uno o più contatori e la frequenza con cui i valori devono essere forniti. La classe registra inoltre l’ora in cui i campioni sono stati prelevati. È possibile raccogliere tutti questi dati in una classe singola di cui è stata creata un'istanza e utilizzare il metodo Calculate per eseguire un calcolo. È anche possibile usare il metodo Calculate per eseguire un calcolo che confronti i valori di due diversi campioni.

Il calcolo eseguito dipende dal tipo dei contatori. Ad alcuni tipi di contatore sono associati calcoli specifici. I contatori del tipo ElapsedTime confrontano ad esempio il timestamp di due diversi campioni e determinano il tempo trascorso. Molti contatori eseguono un calcolo della media in base ai dati recuperati.

Di seguito sono forniti i passaggi necessari per definire un campione:

  • Creare una o più istanze della classe CounterSample.

  • Recuperare un campione corrente per ogni istanza.

  • Chiamare il metodo Calculate, passando come parametro ogni campione da includere nel calcolo.

Per recuperare i campioni del contatore delle prestazioni ed eseguire un calcolo

  1. Creare un'istanza della classe PerformanceCounter e configurarla in modo che interagisca con la categoria e il contatore desiderati. Per ulteriori informazioni, vedere Procedura: creare istanze del componente PerformanceCounter o Procedura: configurare istanze del componente PerformanceCounter.

  2. Creare un’istanza della classe CounterSample che contenga i risultati del campionamento.

  3. Chiamare il metodo NextSample dell’istanza del componente PerformanceCounter per recuperare il valore calcolato e assegnare il risultato alla classe CounterSample.

    Suggerimento:

    Per eseguire un calcolo, è necessario recuperare due campioni.

  4. Creare una variabile di tipo Single in cui memorizzare i risultati del calcolo.

  5. Per ognuno dei due campioni necessari per il calcolo, assegnare un valore restituito dal metodo NextSample a una variabile di tipo CounterSample.

  6. Chiamare il metodo Calculate della classe CounterSample ed effettuare una delle seguenti operazioni:

    • Se sono stati recuperati due campioni, passarli entrambi (archiviati come oggetti CounterSample) al metodo Calculate come parametri.

    • In caso di recupero di un solo campione, passare il primo campione al metodo Calculate, quindi utilizzare il secondo parametro per recuperare un altro campione.

  7. Impostare il risultato del calcolo nella variabile appositamente creata.

    Nota:

    È necessario che i due campioni provengano da contatori dello stesso tipo. In caso contrario, il metodo genererà un’eccezione. Il tipo di contatore determina il tipo di calcolo eseguito. Per ulteriori informazioni, vedere Tipi di contatori delle prestazioni.

    Nel codice seguente viene mostrato come recuperare due campioni e confrontarli usando il metodo Calculate:

    ' Dim variables of types CounterSample for each sample and a 
    ' variable of type single for the results.
    Dim sample1 As CounterSample
    Dim sample2 As CounterSample
    Dim result As Single
    ' Retrieve a sample.
    sample1 = PerformanceCounter1.NextSample()
    ' Wait some interval of time here and retrieve
    ' a second sample.
    System.Threading.Thread.Sleep(1000)
    sample2 = PerformanceCounter1.NextSample()
    ' Pass both samples to the Calculate method.
    result = CounterSample.Calculate(sample1, sample2)
    
         System.Diagnostics.CounterSample sample1;
            System.Diagnostics.CounterSample sample2;
            float result;
            // Retrieve a sample.
            sample1 = PerformanceCounter1.NextSample();
            // Wait some interval of time here and retrieve
            // a second sample.
            System.Threading.Thread.Sleep(1000);
            sample2 = PerformanceCounter1.NextSample();
            // Pass both samples to the Calculate method.
            result = System.Diagnostics.CounterSample.Calculate(sample1, sample2);
    

    In alternativa, è possibile chiamare il metodo NextSample per fornire i valori per il secondo campione. Questo approccio viene illustrato nell'esempio seguente:

    Dim sample1 As CounterSample
    Dim result As Single
    ' Retrieve a single sample.
    sample1 = PerformanceCounter1.NextSample()
    ' Pass the retrieved sample to the calculate method
    ' and retrieve another sample in the second parameter.
    result = CounterSample.Calculate(sample1, PerformanceCounter1.NextSample())
    
         System.Diagnostics.CounterSample sample1;
            float result;
            // Retrieve a single sample.
            sample1 = PerformanceCounter1.NextSample();
            // Pass the retrieved sample to the calculate method
            // and retrieve another sample in the second parameter.
            result = System.Diagnostics.CounterSample.Calculate(sample1, PerformanceCounter1.NextSample());
    

Vedere anche

Attività

Procedura: recuperare i valori non elaborati del contatore delle prestazioni

Procedura: recuperare i valori calcolati del contatore delle prestazioni

Procedura: recuperare elenchi di contatori e categorie

Concetti

Recupero dei valori del contatore delle prestazioni