PerformanceCounter.NextSample 方法

定義

取得計數器範例,並為其傳回未經處理或未計算的值。

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

傳回

CounterSample,表示系統為這個計數器取得的下一個未經處理的值。

例外狀況

該執行個體沒有與效能計數器正確的相關聯。

-或-

使用全域共用記憶體時,InstanceLifetime 屬性是設定為 Process

存取系統 API 時發生的錯誤。

以不具有系統管理員權限執行的程式碼嘗試讀取效能計數器。

範例

下列程式碼範例示範如何使用 NextSample 方法來取得計數器的下一個未計算值。 此程式碼範例是 類別較大範例的 PerformanceCounter 一部分。

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

備註

這個方法通常用於包含未計算值的計數器。

注意

如果 屬性的值 InstanceLifetimeProcess ,而且已使用 .NET Framework 1.0 版或 1.1 版建立效能計數器類別目錄, InvalidOperationException 則會擲回 。 使用舊版所建立的效能計數器類別使用全域共用記憶體,且 的值 InstanceLifetime 必須是 Global 。 如果.NET Framework 1.0 版或 1.1 版的應用程式未使用類別,請刪除並重新建立類別。

注意

若要讀取 Windows Vista、Windows XP Professional x64 Edition 或 Windows Server 2003 中的效能計數器,您必須是 效能監視器 Users 群組的成員,或具有系統管理許可權。

若要避免提高您在 Windows Vista 中存取效能計數器的許可權,請將您自己新增至 效能監視器 Users 群組。

在 Windows Vista 中,使用者帳戶控制 (UAC) 會判斷使用者的權限。 如果您是內建 Administrators 群組的成員,系統會將兩個執行階段存取語彙基元 (Token) 指派給您:標準使用者存取語彙基元及管理員存取語彙基元。 根據預設,您會屬於標準使用者角色。 若要執行存取效能計數器的程式碼,您必須先將許可權從標準使用者提升為系統管理員。 您可以在啟動應用程式時,以滑鼠右鍵按一下應用程式圖示,並指出您想要以系統管理員身分執行,藉此提高為系統管理員權限。

適用於