PerformanceCounter.NextSample 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得計數器範例,並為其傳回未經處理或未計算的值。
public:
System::Diagnostics::CounterSample NextSample();
public System.Diagnostics.CounterSample NextSample ();
member this.NextSample : unit -> System.Diagnostics.CounterSample
Public Function NextSample () As CounterSample
傳回
CounterSample,表示系統為這個計數器取得的下一個未經處理的值。
例外狀況
存取系統 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
備註
這個方法通常用於包含未計算值的計數器。
注意
如果 屬性的值InstanceLifetime是 Process ,而且已使用 .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) 指派給您:標準使用者存取語彙基元及管理員存取語彙基元。 根據預設,您會屬於標準使用者角色。 若要執行存取性能計數器的程式代碼,您必須先將許可權從標準使用者提升為系統管理員。 您可以在啟動應用程式時,以滑鼠右鍵按一下應用程式圖示,並指出您想要以系統管理員身分執行,藉此提高為系統管理員權限。