共用方式為


HOW TO:擷取效能計數器範例

更新:2007 年 11 月

您可以使用 CounterSample 類別來建立樣本並計算它們的內容。樣本類別會根據您所定義的準則對效能計數器「取樣」。這些準則包含一個或多個計數器值和提供這些值的頻率。此外,此類別也會記錄取得樣本的時間。您可以將所有的這些資料收集到單一的執行個體化類別中,再使用 Calculate 方法來計算。您也可以使用 Calculate 方法,來執行兩個不同樣本值比較的計算。

執行的計算視計數器類型而定;某些計數器類型已指定了特定的計算。例如,ElapsedTime 型別的計數器會比較兩個不同樣本的時間戳記,並判斷經過多少時間。許多計數器都會根據所擷取之資料執行平均計算。

定義樣本時需完成下列步驟:

  • 建立一個或多個 CounterSample 類別的執行個體。

  • 擷取每個執行個體的目前樣本。

  • 呼叫 Calculate 方法,傳遞要包含在計算中的每個樣本做為參數。

若要擷取效能計數器樣本並執行計算

  1. 建立 PerformanceCounter 執行個體,並設定為與所需的分類和計數器互動。如需詳細資訊,請參閱 HOW TO:建立 PerformanceCounter 元件執行個體HOW TO:設定 PerformanceCounter 元件執行個體

  2. 建立保存取樣結果的 CounterSample 類別執行個體。

  3. 呼叫 PerformanceCounter 元件執行個體的 NextSample 方法來擷取計算過的值,並將結果指派給 CounterSample 類別。

    秘訣

    您必須擷取兩個樣本才能執行計算。

  4. 建立保存計算結果的變數,並將其資料型別指定為 [Single]。

  5. 分別對於計算所需的兩個樣本,將 NextSample 的傳回值指派給 CounterSample 型別的變數。

  6. 呼叫 CounterSample 類別的 Calculate 方法,再執行下列其中一項:

    • 如果您已擷取兩個樣本,則將這兩個樣本 (儲存為 CounterSample 物件) 傳遞給 Calculate 方法做為參數。

    • 如果您只擷取一個樣本,則將第一個樣本傳遞給 Calculate 方法,再使用第二個參數來擷取另一個樣本。

  7. 將計算結果設定為等於您所建立用來保存結果的變數。

    注意事項:

    這兩個樣本必須來自於相同類型的計數器,否則此方法將擲回例外狀況。計數器類型將決定執行那一種計算。如需詳細資訊,請參閱效能計數器類型

    下列程式碼會說明如何擷取兩個樣本,並使用 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);
    

    或者,您可以呼叫 NextSample 方法來提供第二個樣本的值。以下範例將說明如何使用這種方式:

    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());
    

請參閱

工作

HOW TO:擷取未經處理的效能計數器值

HOW TO:擷取計算出的效能計數器值

HOW TO:擷取計數器和分類清單

概念

效能計數器值擷取