パフォーマンス カウンタ [performance counter]
PerformanceCounter イベント
PerformanceCounter クラス
アセンブリ: System (system.dll 内)


![]() |
---|
このクラスに適用される HostProtectionAttribute 属性の Resources プロパティの値は、Synchronization または SharedState です。HostProtectionAttribute は、デスクトップ アプリケーション (一般的には、アイコンをダブルクリック、コマンドを入力、またはブラウザに URL を入力して起動するアプリケーション) には影響しません。詳細については、HostProtectionAttribute クラスのトピックまたは「SQL Server プログラミングとホスト保護属性」を参照してください。 |
PerformanceCounter コンポーネントを使用して、既存の定義済みカウンタまたはカスタム カウンタを読み取ることも、パフォーマンス データをカスタム カウンタに発行する (書き込む) こともできます。
![]() |
---|
NET Framework Version 1.0 および 1.1 では、このクラスは直接の呼び出し元に完全な信頼を要求します。Version 2.0 では、このクラスは PerformanceCounterPermission に特定のアクションを要求します。PerformanceCounterPermission で信頼度の低いコードを許可しないようにすることをお勧めします。読み取りおよび書き込みのパフォーマンス カウンタの機能により、コードでは、実行プロセスの列挙やプロセスの情報の取得などのアクションを実行できます。 |
![]() |
---|
Increment メソッド、IncrementBy メソッド、および Decrement メソッドでは、インタロックを使用してカウンタの値を更新します。これにより、マルチスレッドやマルチプロセスの状況でもカウンタ値を正確に維持できますが、パフォーマンスの低下が生じます。インタロックを使用した処理による正確性が不要な場合は、RawValue プロパティを直接更新することで、パフォーマンスを最大 5 倍に高めることができます。ただし、マルチスレッドの場合、カウンタ値の更新の一部が無視され、データが不正確になる可能性があります。 |
カウンタは、パフォーマンス データを収集する機構です。すべてのカウンタの名前がレジストリに格納され、各カウンタはシステム機能の特定の領域に関連します。例には、プロセッサのビジー時間、メモリの使用状況、ネットワーク接続で受信したバイト数などが含まれます。
各カウンタは、名前と場所で一意に識別されます。ファイル パスが、ドライブ名、ディレクトリ名、1 つ以上のサブディレクトリ名、およびファイル名で構成されるように、カウンタ情報も、コンピュータ名、カテゴリ名、カテゴリ インスタンス名、カウンタ名の 4 つの要素で構成されます。
カウンタ情報には、カウンタがデータを測定する対象のカテゴリまたはパフォーマンス オブジェクトを含める必要があります。コンピュータのカテゴリには、プロセッサ、ディスク、メモリなどの物理コンポーネントが含まれます。プロセスやスレッドなどのシステム カテゴリもあります。各カテゴリはコンピュータ内の機能要素に関連し、それぞれに標準カウンタのセットが割り当てられます。これらのオブジェクトは、Windows 2000 システム モニタの [カウンタの追加] ダイアログ ボックスの [パフォーマンス オブジェクト] ボックスの一覧に表示されます。カウンタ パスにはこれらを含める必要があります。パフォーマンス データは、関連するカテゴリによってグループ化されます。
場合によっては、同じカテゴリの複数のコピーが存在します。たとえば、複数のプロセスとスレッドが同時に実行されることがあります。また、複数のプロセッサが搭載されているコンピュータもあります。カテゴリのコピーをカテゴリ インスタンスと呼びます。インスタンスごとに、標準カウンタのセットが割り当てられます。1 つのカテゴリに複数のインスタンスがある場合は、カウンタ情報でインスタンスを明確化する必要があります。
必要な計算を実行するために初期値または前の値が必要な場合、このようなカウンタのパフォーマンス データを取得するには、NextValue メソッドを 2 回呼び出して、返された情報をアプリケーションの要件に応じて使用します。
Windows 98, Windows Millennium Edition プラットフォームメモ : パフォーマンス カウンタは、Windows 98 または Windows Millennium Edition (Me) ではサポートされていません。

Imports System Imports System.Collections Imports System.Collections.Specialized Imports System.Diagnostics _ Public Class App Private Shared PC As PerformanceCounter Private Shared BPC As PerformanceCounter Public Shared Sub Main() Dim samplesList As New ArrayList() SetupCategory() CreateCounters() CollectSamples(samplesList) CalculateResults(samplesList) End Sub 'Main Private Shared Function SetupCategory() As Boolean If Not PerformanceCounterCategory.Exists("AverageCounter64SampleCategory") Then Dim CCDC As New CounterCreationDataCollection() ' Add the counter. Dim averageCount64 As New CounterCreationData() averageCount64.CounterType = PerformanceCounterType.AverageCount64 averageCount64.CounterName = "AverageCounter64Sample" CCDC.Add(averageCount64) ' Add the base counter. Dim averageCount64Base As New CounterCreationData() averageCount64Base.CounterType = PerformanceCounterType.AverageBase averageCount64Base.CounterName = "AverageCounter64SampleBase" CCDC.Add(averageCount64Base) ' Create the category. PerformanceCounterCategory.Create("AverageCounter64SampleCategory", "Demonstrates usage of the AverageCounter64 performance counter type.", CCDC) Return True Else Console.WriteLine("Category exists - AverageCounter64SampleCategory") Return False End If End Function 'SetupCategory Private Shared Sub CreateCounters() ' Create the counters. PC = New PerformanceCounter("AverageCounter64SampleCategory", "AverageCounter64Sample", False) BPC = New PerformanceCounter("AverageCounter64SampleCategory", "AverageCounter64SampleBase", False) PC.RawValue = 0 BPC.RawValue = 0 End Sub 'CreateCounters Private Shared Sub CollectSamples(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 + " = " + value)) PC.IncrementBy(value) BPC.Increment() If j Mod 10 = 9 Then OutputSample(PC.NextSample()) samplesList.Add(PC.NextSample()) Else Console.WriteLine() End If System.Threading.Thread.Sleep(50) Next j End Sub 'CollectSamples Private Shared Sub CalculateResults(samplesList As ArrayList) Dim i As Integer For i = 0 To (samplesList.Count - 1) - 1 ' Output the sample. OutputSample(CType(samplesList(i), CounterSample)) OutputSample(CType(samplesList((i + 1)), CounterSample)) ' Use .NET to calculate the counter value. Console.WriteLine((".NET computed counter value = " + CounterSampleCalculator.ComputeCounterValue(CType(samplesList(i), CounterSample), CType(samplesList((i + 1)), CounterSample)))) ' Calculate the counter value manually. Console.WriteLine(("My computed counter value = " + MyComputeCounterValue(CType(samplesList(i), CounterSample), CType(samplesList((i + 1)), CounterSample)))) Next i End Sub 'CalculateResults '++++++++//++++++++//++++++++//++++++++//++++++++//++++++++//++++++++//++++++++ ' Description - This counter type shows how many items are processed, on average, ' during an operation. Counters of this type display a ratio of the items ' processed (such as bytes sent) to the number of operations completed. The ' ratio is calculated by comparing the number of items processed during the ' last interval to the number of operations completed during the last interval. ' Generic type - Average ' Formula - (N1 - N0) / (D1 - D0), where the numerator (N) represents the number ' of items processed during the last sample interval and the denominator (D) ' represents the number of operations completed during the last two sample ' intervals. ' Average (Nx - N0) / (Dx - D0) ' Example PhysicalDisk\ Avg. Disk Bytes/Transfer '++++++++//++++++++//++++++++//++++++++//++++++++//++++++++//++++++++//++++++++ Private Shared Function MyComputeCounterValue(s0 As CounterSample, s1 As CounterSample) As [Single] Dim numerator As [Single] = CType(s1.RawValue, [Single]) - CType(s0.RawValue, [Single]) Dim denomenator As [Single] = CType(s1.BaseValue, [Single]) - CType(s0.BaseValue, [Single]) Dim counterValue As [Single] = numerator / denomenator Return counterValue End Function 'MyComputeCounterValue ' Output information about the counter sample. Private Shared Sub OutputSample(s As CounterSample) Console.WriteLine(ControlChars.Lf + ControlChars.Cr + "+++++++++++") Console.WriteLine("Sample values - " + ControlChars.Lf + ControlChars.Cr) Console.WriteLine((" BaseValue = " + s.BaseValue)) Console.WriteLine((" CounterFrequency = " + s.CounterFrequency)) Console.WriteLine((" CounterTimeStamp = " + s.CounterTimeStamp)) Console.WriteLine((" CounterType = " + s.CounterType)) Console.WriteLine((" RawValue = " + s.RawValue)) Console.WriteLine((" SystemFrequency = " + s.SystemFrequency)) Console.WriteLine((" TimeStamp = " + s.TimeStamp)) Console.WriteLine((" TimeStamp100nSec = " + s.TimeStamp100nSec)) Console.WriteLine("++++++++++++++++++++++") End Sub 'OutputSample End Class 'App
using System; using System.Collections; using System.Collections.Specialized; using System.Diagnostics; public class App { private static PerformanceCounter PC; private static PerformanceCounter BPC; public static void Main() { ArrayList samplesList = new ArrayList(); SetupCategory(); CreateCounters(); CollectSamples(samplesList); CalculateResults(samplesList); } private static bool SetupCategory() { if ( !PerformanceCounterCategory.Exists("AverageCounter64SampleCategory") ) { CounterCreationDataCollection CCDC = new CounterCreationDataCollection(); // Add the counter. CounterCreationData averageCount64 = new CounterCreationData(); averageCount64.CounterType = PerformanceCounterType.AverageCount64; averageCount64.CounterName = "AverageCounter64Sample"; CCDC.Add(averageCount64); // Add the base counter. CounterCreationData averageCount64Base = new CounterCreationData(); averageCount64Base.CounterType = PerformanceCounterType.AverageBase; averageCount64Base.CounterName = "AverageCounter64SampleBase"; CCDC.Add(averageCount64Base); // Create the category. PerformanceCounterCategory.Create("AverageCounter64SampleCategory" , "Demonstrates usage of the AverageCounter64 performance counter type.", CCDC); return(true); } else { Console.WriteLine("Category exists - AverageCounter64SampleCategory"); return(false); } } private static void CreateCounters() { // Create the counters. PC = new PerformanceCounter("AverageCounter64SampleCategory", "AverageCounter64Sample", false); BPC = new PerformanceCounter("AverageCounter64SampleCategory", "AverageCounter64SampleBase", false); PC.RawValue=0; BPC.RawValue=0; } 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); 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 CalculateResults(ArrayList samplesList) { for(int i = 0; i < (samplesList.Count - 1); i++) { // Output the sample. OutputSample( (CounterSample)samplesList[i] ); OutputSample( (CounterSample)samplesList[i+1] ); // Use .NET to calculate the counter value. Console.WriteLine(".NET computed counter value = " + CounterSampleCalculator.ComputeCounterValue((CounterSample)samplesList[i] , (CounterSample)samplesList[i+1]) ); // Calculate the counter value manually. Console.WriteLine("My computed counter value = " + MyComputeCounterValue((CounterSample)samplesList[i], (CounterSample)samplesList[i+1]) ); } } //++++++++//++++++++//++++++++//++++++++//++++++++//++++++++//++++++++//++++++++ // Description - This counter type shows how many items are processed, on average, // during an operation. Counters of this type display a ratio of the items // processed (such as bytes sent) to the number of operations completed. The // ratio is calculated by comparing the number of items processed during the // last interval to the number of operations completed during the last interval. // Generic type - Average // Formula - (N1 - N0) / (D1 - D0), where the numerator (N) represents the number // of items processed during the last sample interval and the denominator (D) // represents the number of operations completed during the last two sample // intervals. // Average (Nx - N0) / (Dx - D0) // Example PhysicalDisk\ Avg. Disk Bytes/Transfer //++++++++//++++++++//++++++++//++++++++//++++++++//++++++++//++++++++//++++++++ private static Single MyComputeCounterValue(CounterSample s0, CounterSample s1) { Single numerator = (Single)s1.RawValue - (Single)s0.RawValue; Single denomenator = (Single)s1.BaseValue - (Single)s0.BaseValue; Single counterValue = numerator / denomenator; return(counterValue); } // Output information about the counter sample. private static void OutputSample(CounterSample s) { Console.WriteLine("\r\n+++++++++++"); Console.WriteLine("Sample values - \r\n"); Console.WriteLine(" BaseValue = " + s.BaseValue); Console.WriteLine(" CounterFrequency = " + s.CounterFrequency); Console.WriteLine(" CounterTimeStamp = " + s.CounterTimeStamp); Console.WriteLine(" CounterType = " + s.CounterType); Console.WriteLine(" RawValue = " + s.RawValue); Console.WriteLine(" SystemFrequency = " + s.SystemFrequency); Console.WriteLine(" TimeStamp = " + s.TimeStamp); Console.WriteLine(" TimeStamp100nSec = " + s.TimeStamp100nSec); Console.WriteLine("++++++++++++++++++++++"); } }
#using <System.dll> using namespace System; using namespace System::Collections; using namespace System::Collections::Specialized; using namespace System::Diagnostics; // Output information about the counter sample. void OutputSample( CounterSample s ) { Console::WriteLine( "\r\n+++++++++++" ); Console::WriteLine( "Sample values - \r\n" ); Console::WriteLine( " BaseValue = {0}", s.BaseValue ); Console::WriteLine( " CounterFrequency = {0}", s.CounterFrequency ); Console::WriteLine( " CounterTimeStamp = {0}", s.CounterTimeStamp ); Console::WriteLine( " CounterType = {0}", s.CounterType ); Console::WriteLine( " RawValue = {0}", s.RawValue ); Console::WriteLine( " SystemFrequency = {0}", s.SystemFrequency ); Console::WriteLine( " TimeStamp = {0}", s.TimeStamp ); Console::WriteLine( " TimeStamp100nSec = {0}", s.TimeStamp100nSec ); Console::WriteLine( "++++++++++++++++++++++" ); } //++++++++//++++++++//++++++++//++++++++//++++++++//++++++++//++++++++//++++++++ // Description - This counter type shows how many items are processed, on average, // during an operation. Counters of this type display a ratio of the items // processed (such as bytes sent) to the number of operations completed. The // ratio is calculated by comparing the number of items processed during the // last interval to the number of operations completed during the last interval. // Generic type - Average // Formula - (N1 - N0) / (D1 - D0), where the numerator (N) represents the number // of items processed during the last sample interval and the denominator (D) // represents the number of operations completed during the last two sample // intervals. // Average (Nx - N0) / (Dx - D0) // Example PhysicalDisk\ Avg. Disk Bytes/Transfer //++++++++//++++++++//++++++++//++++++++//++++++++//++++++++//++++++++//++++++++ float MyComputeCounterValue( CounterSample s0, CounterSample s1 ) { float numerator = (float)s1.RawValue - (float)s0.RawValue; float denomenator = (float)s1.BaseValue - (float)s0.BaseValue; float counterValue = numerator / denomenator; return counterValue; } bool SetupCategory() { if ( !PerformanceCounterCategory::Exists( "AverageCounter64SampleCategory" ) ) { CounterCreationDataCollection^ CCDC = gcnew CounterCreationDataCollection; // Add the counter. CounterCreationData^ averageCount64 = gcnew CounterCreationData; averageCount64->CounterType = PerformanceCounterType::AverageCount64; averageCount64->CounterName = "AverageCounter64Sample"; CCDC->Add( averageCount64 ); // Add the base counter. CounterCreationData^ averageCount64Base = gcnew CounterCreationData; averageCount64Base->CounterType = PerformanceCounterType::AverageBase; averageCount64Base->CounterName = "AverageCounter64SampleBase"; CCDC->Add( averageCount64Base ); // Create the category. PerformanceCounterCategory::Create( "AverageCounter64SampleCategory", "Demonstrates usage of the AverageCounter64 performance counter type.", CCDC ); return (true); } else { Console::WriteLine( "Category exists - AverageCounter64SampleCategory" ); return (false); } } void CreateCounters( PerformanceCounter^% PC, PerformanceCounter^% BPC ) { // Create the counters. PC = gcnew PerformanceCounter( "AverageCounter64SampleCategory","AverageCounter64Sample",false ); BPC = gcnew PerformanceCounter( "AverageCounter64SampleCategory","AverageCounter64SampleBase",false ); PC->RawValue = 0; BPC->RawValue = 0; } 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 ); } } void CalculateResults( ArrayList^ samplesList ) { for ( int i = 0; i < (samplesList->Count - 1); i++ ) { // Output the sample. OutputSample( *safe_cast<CounterSample^>(samplesList[ i ]) ); OutputSample( *safe_cast<CounterSample^>(samplesList[ i + 1 ]) ); // Use .NET to calculate the counter value. Console::WriteLine( ".NET computed counter value = {0}", CounterSampleCalculator::ComputeCounterValue( *safe_cast<CounterSample^>(samplesList[ i ]), *safe_cast<CounterSample^>(samplesList[ i + 1 ]) ) ); // Calculate the counter value manually. Console::WriteLine( "My computed counter value = {0}", MyComputeCounterValue( *safe_cast<CounterSample^>(samplesList[ i ]), *safe_cast<CounterSample^>(samplesList[ i + 1 ]) ) ); } } int main() { ArrayList^ samplesList = gcnew ArrayList; PerformanceCounter^ PC; PerformanceCounter^ BPC; SetupCategory(); CreateCounters( PC, BPC ); CollectSamples( samplesList, PC, BPC ); CalculateResults( samplesList ); }
import System.*; import System.Collections.*; import System.Collections.Specialized.*; import System.Diagnostics.*; public class App { private static PerformanceCounter pc; private static PerformanceCounter bpc; public static void main(String[] args) { ArrayList samplesList = new ArrayList(); SetupCategory(); CreateCounters(); CollectSamples(samplesList); CalculateResults(samplesList); } //main private static boolean SetupCategory() { if (!(PerformanceCounterCategory.Exists( "AverageCounter64SampleCategory"))) { CounterCreationDataCollection ccdc = new CounterCreationDataCollection(); // Add the counter. CounterCreationData averageCount64 = new CounterCreationData(); averageCount64. set_CounterType(PerformanceCounterType.AverageCount64); averageCount64.set_CounterName("AverageCounter64Sample"); ccdc.Add(averageCount64); // Add the base counter. CounterCreationData averageCount64Base = new CounterCreationData(); averageCount64Base.set_CounterType(PerformanceCounterType. AverageBase); averageCount64Base.set_CounterName("AverageCounter64SampleBase"); ccdc.Add(averageCount64Base); // Create the category. PerformanceCounterCategory.Create("AverageCounter64SampleCategory" , "Demonstrates usage of the AverageCounter64 performance " + "counter type.", ccdc); return true; } else { Console.WriteLine("Category exists - AverageCounter64SampleCategory"); return false; } } //SetupCategory private static void CreateCounters() { // Create the counters. pc = new PerformanceCounter("AverageCounter64SampleCategory" , "AverageCounter64Sample", false); bpc = new PerformanceCounter("AverageCounter64SampleCategory" , "AverageCounter64SampleBase", false); pc.set_RawValue(0); bpc.set_RawValue(0); } //CreateCounters private static void CollectSamples(ArrayList samplesList) { Random r = new Random(DateTime.get_Now().get_Millisecond()); // Loop for the samples. for (int j = 0; j < 100; j++) { int value = r.Next(1, 10); Console.Write(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); } } //CollectSamples private static void CalculateResults(ArrayList samplesList) { for (int i = 0; i < samplesList.get_Count() - 1; i++) { // Output the sample. OutputSample((CounterSample)samplesList.get_Item(i)); OutputSample((CounterSample)samplesList.get_Item(i + 1)); // Use.NET to calculate the counter value. Console.WriteLine(".NET computed counter value = " + CounterSampleCalculator.ComputeCounterValue((CounterSample) samplesList.get_Item(i), (CounterSample)samplesList.get_Item(i + 1))); // Calculate the counter value manually. Console.WriteLine("My computed counter value = " + MyComputeCounterValue((CounterSample)samplesList.get_Item(i), (CounterSample)samplesList.get_Item(i + 1))); } } //CalculateResults //++++++++//++++++++//++++++++//++++++++//++++++++//++++++++//++++++++ //++++++++ // Description - This counter type shows how many items are processed, // on average,during an operation.Counters of this type display a // ratio of the items processed (such as bytes sent) to the number // of operations completed. The ratio is calculated by comparing // the number of items processed during the last interval to the // number of operations completed during the last interval. // Generic type - Average // Formula - (N1 - N0) / (D1 - D0), where the numerator (N) // represents the number of items processed during the last sample // interval and the denominator (D) represents the number of // operations completed during the last two sample // intervals. // Average (Nx - N0) / (Dx - D0) // Example PhysicalDisk\ Avg. Disk Bytes/Transfer //++++++++//++++++++//++++++++//++++++++//++++++++//++++++++//++++++++ //++++++++ private static float MyComputeCounterValue(CounterSample s0, CounterSample s1) { float numerator = (float)s1.get_RawValue() - (float)s0.get_RawValue(); float denomenator = (float)s1.get_BaseValue() - (float)s0. get_BaseValue(); float counterValue = numerator / denomenator; return counterValue; } //MyComputeCounterValue // Output information about the counter sample. private static void OutputSample(CounterSample s) { Console.WriteLine("\r\n+++++++++++"); Console.WriteLine("Sample values - \r\n"); Console.WriteLine(" BaseValue = " + s.get_BaseValue()); Console.WriteLine(" CounterFrequency = " + s.get_CounterFrequency()); Console.WriteLine(" CounterTimeStamp = " + s.get_CounterTimeStamp()); Console.WriteLine(" CounterType = " + s.get_CounterType()); Console.WriteLine(" RawValue = " + s.get_RawValue()); Console.WriteLine(" SystemFrequency = " + s.get_SystemFrequency()); Console.WriteLine(" TimeStamp = " + s.get_TimeStamp()); Console.WriteLine(" TimeStamp100nSec = " + s.get_TimeStamp100nSec()); Console.WriteLine("++++++++++++++++++++++"); } //OutputSample } //App

System.MarshalByRefObject
System.ComponentModel.Component
System.Diagnostics.PerformanceCounter


Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


PerformanceCounter コンストラクタ ()
アセンブリ: System (system.dll 内)


例外の種類 | 条件 |
---|---|
PlatformNotSupportedException | プラットフォームが Windows 98 または Windows Millennium Edition (Me) です。パフォーマンス カウンタはサポートされません。 |

このコンストラクタのオーバーロードによって、CategoryName、CounterName、InstanceName の各プロパティが空の文字列 ("") に設定され、MachineName プロパティがローカル コンピュータ ("") に設定されます。
このコンストラクタは、パフォーマンス カウンタを初期化しないため、このインスタンスはローカル コンピュータの既存のカウンタには関連付けられません。特定のパフォーマンス カウンタを指すようにするには、CategoryName プロパティと CounterName プロパティを設定し、必要に応じて InstanceName プロパティと MachineName プロパティを設定します。この後で、他のプロパティを読み取るか、カウンタから読み取ります。パフォーマンス カウンタに書き込むには、ReadOnly プロパティを false に設定します。
![]() |
---|
このメンバに適用される HostProtectionAttribute 属性の Resources プロパティの値は、Synchronization または SharedState です。HostProtectionAttribute は、デスクトップ アプリケーション (一般的には、アイコンをダブルクリック、コマンドを入力、またはブラウザに URL を入力して起動するアプリケーション) には影響しません。詳細については、HostProtectionAttribute クラスのトピックまたは「SQL Server プログラミングとホスト保護属性」を参照してください。 |

Dim PC As New PerformanceCounter() PC.CategoryName = "Process" PC.CounterName = "Private Bytes" PC.InstanceName = "Explorer" MessageBox.Show(PC.NextValue().ToString())
PerformanceCounter PC=new PerformanceCounter(); PC.CategoryName="Process"; PC.CounterName="Private Bytes"; PC.InstanceName="Explorer"; MessageBox.Show(PC.NextValue().ToString());


Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


PerformanceCounter コンストラクタ (String, String, Boolean)
アセンブリ: System (system.dll 内)

Dim categoryName As String Dim counterName As String Dim readOnly As Boolean Dim instance As New PerformanceCounter(categoryName, counterName, readOnly)
public function PerformanceCounter ( categoryName : String, counterName : String, readOnly : boolean )
- categoryName
このパフォーマンス カウンタが関連付けられているパフォーマンス カウンタ カテゴリ (パフォーマンス オブジェクト) の名前。
- counterName
パフォーマンス カウンタの名前。

例外の種類 | 条件 |
---|---|
InvalidOperationException | categoryName が空の文字列 ("") です。 または counterName が空の文字列 ("") です。 または 指定されたカテゴリが存在しません。(readOnly が true の場合)。 または 指定されたカテゴリは、.NET Framework カスタム カテゴリではありません (readOnly が false の場合)。 または 指定されたカテゴリは複数インスタンスとしてマークされているため、インスタンス名を使用してパフォーマンス カウンタを作成する必要があります。 |
ArgumentNullException | categoryName パラメータまたは counterName パラメータが null 参照 (Visual Basic では Nothing) です。 |
Win32Exception | |
PlatformNotSupportedException | プラットフォームが Windows 98 または Windows Millennium Edition (Me) です。パフォーマンス カウンタはサポートされません。 |

このオーバーロードを使用して、1 つのパフォーマンス カウンタ カテゴリ インスタンスが含まれるカテゴリに属するローカル コンピュータの読み取り専用カウンタまたは読み取り/書き込みカウンタにアクセスします。このコンストラクタを使用して、この PerformanceCounter インスタンスで複数のインスタンスが含まれるカテゴリを指そうとすると、例外がスローされます。
このコンストラクタのオーバーロードによって、CategoryName、CounterName、ReadOnly の各プロパティが渡された値に設定され、MachineName プロパティがローカル コンピュータ "." に設定され、InstanceName プロパティが空の文字列 (".") に設定されます。
このコンストラクタは、パフォーマンス カウンタを初期化し、インスタンスをローカル コンピュータの既存のカウンタ (システム カウンタまたはカスタム カウンタ) に関連付けます。CategoryName プロパティと CounterName プロパティに渡す値は、ローカル コンピュータの既存のパフォーマンス カウンタを指す必要があります。指しているパフォーマンス カウンタ インスタンスが無効の場合は、コンストラクタを呼び出すと例外がスローされます。
![]() |
---|
このオーバーロードを使用するとシステム カウンタに接続できますが、システム カウンタに書き込むことはできません。そのため、システム カウンタに接続するときに readOnly を false に設定すると、例外がスローされます。 |



Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


PerformanceCounter コンストラクタ (String, String, String, Boolean)
アセンブリ: System (system.dll 内)

Public Sub New ( _ categoryName As String, _ counterName As String, _ instanceName As String, _ readOnly As Boolean _ )
Dim categoryName As String Dim counterName As String Dim instanceName As String Dim readOnly As Boolean Dim instance As New PerformanceCounter(categoryName, counterName, instanceName, readOnly)
public PerformanceCounter ( string categoryName, string counterName, string instanceName, bool readOnly )
public: PerformanceCounter ( String^ categoryName, String^ counterName, String^ instanceName, bool readOnly )
public PerformanceCounter ( String categoryName, String counterName, String instanceName, boolean readOnly )
public function PerformanceCounter ( categoryName : String, counterName : String, instanceName : String, readOnly : boolean )
- categoryName
このパフォーマンス カウンタが関連付けられているパフォーマンス カウンタ カテゴリ (パフォーマンス オブジェクト) の名前。
- counterName
パフォーマンス カウンタの名前。

例外の種類 | 条件 |
---|---|
InvalidOperationException | categoryName が空の文字列 ("") です。 または counterName が空の文字列 ("") です。 または 要求した読み取り/書き込みアクセス許可の設定は、このカウンタでは無効です。 または 指定されたカテゴリが存在しません。(readOnly が true の場合)。 または 指定されたカテゴリは、.NET Framework カスタム カテゴリではありません (readOnly が false の場合)。 または 指定されたカテゴリは複数インスタンスとしてマークされているため、インスタンス名を使用してパフォーマンス カウンタを作成する必要があります。 または |
ArgumentNullException | categoryName パラメータまたは counterName パラメータが null 参照 (Visual Basic では Nothing) です。 |
Win32Exception | |
PlatformNotSupportedException | プラットフォームが Windows 98 または Windows Millennium Edition (Me) です。パフォーマンス カウンタはサポートされません。 |

このオーバーロードを使用して、読み取り専用モードまたは読み書き可能モードでパフォーマンス カウンタにアクセスします。
このコンストラクタのオーバーロードによって、CategoryName、CounterName、InstanceName の各プロパティが渡された値に設定され、MachineName プロパティがローカル コンピュータ "." に設定されます。
このコンストラクタは、パフォーマンス カウンタを初期化し、インスタンスをローカル コンピュータの既存のカウンタ (システム カウンタまたはカスタム カウンタ) に関連付けます。CategoryName、CounterName、InstanceName の各プロパティに渡す値は、ローカル コンピュータの既存のパフォーマンス カウンタを指す必要があります。指しているパフォーマンス カウンタ インスタンスが、いずれか一方でも無効の場合は、コンストラクタを呼び出すと例外がスローされます。
![]() |
---|
このオーバーロードを使用するとシステム カウンタに接続できますが、システム カウンタに書き込むことはできません。そのため、システム カウンタに接続するときに readOnly を false に設定すると、例外がスローされます。 |
パフォーマンス カテゴリ インスタンスを作成するには、PerformanceCounter コンストラクタで instanceName を指定します。instanceName で指定されたカテゴリ インスタンスが既に存在する場合、新しいオブジェクトは既存のカテゴリ インスタンスを参照します。


Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


PerformanceCounter コンストラクタ (String, String, String, String)
アセンブリ: System (system.dll 内)

Public Sub New ( _ categoryName As String, _ counterName As String, _ instanceName As String, _ machineName As String _ )
Dim categoryName As String Dim counterName As String Dim instanceName As String Dim machineName As String Dim instance As New PerformanceCounter(categoryName, counterName, instanceName, machineName)
public PerformanceCounter ( string categoryName, string counterName, string instanceName, string machineName )
public: PerformanceCounter ( String^ categoryName, String^ counterName, String^ instanceName, String^ machineName )
public PerformanceCounter ( String categoryName, String counterName, String instanceName, String machineName )
public function PerformanceCounter ( categoryName : String, counterName : String, instanceName : String, machineName : String )
- categoryName
このパフォーマンス カウンタが関連付けられているパフォーマンス カウンタ カテゴリ (パフォーマンス オブジェクト) の名前。
- counterName
パフォーマンス カウンタの名前。
- machineName
パフォーマンス カウンタと、それに関連付けられているカテゴリが存在するコンピュータ。

例外の種類 | 条件 |
---|---|
InvalidOperationException | categoryName が空の文字列 ("") です。 または counterName が空の文字列 ("") です。 または 要求した読み取り/書き込みアクセス許可の設定は、このカウンタでは無効です。 または または 指定されたカテゴリは複数インスタンスとしてマークされているため、インスタンス名を使用してパフォーマンス カウンタを作成する必要があります。 または |
ArgumentException | machineName パラメータが有効ではありません。 |
ArgumentNullException | categoryName パラメータまたは counterName パラメータが null 参照 (Visual Basic では Nothing) です。 |
Win32Exception | |
PlatformNotSupportedException | プラットフォームが Windows 98 または Windows Millennium Edition (Me) です。パフォーマンス カウンタはサポートされません。 |

このコンストラクタのオーバーロードは、CategoryName、CounterName、InstanceName、MachineName の各プロパティに、渡された値を設定します。
このコンストラクタは、パフォーマンス カウンタを初期化し、インスタンスを指定したコンピュータの既存のカウンタ (システム カウンタまたはカスタム カウンタ) に関連付けます。CategoryName、CounterName、InstanceName、MachineName の各プロパティに渡す値は、既存のパフォーマンス カウンタを指す必要があります。指しているパフォーマンス カウンタ インスタンスが無効の場合は、コンストラクタを呼び出すと例外がスローされます。このオーバーロードは、読み取り専用カウンタまたは読み取り/書き込み可能カウンタにアクセスできますが、アクセス モードは読み取り専用です。このオーバーロードを使用して作成された PerformanceCounter インスタンスは、カウンタ自身が読み取り/書き込み可能でも、カウンタに書き込むことができません。
![]() |
---|
リモート パフォーマンス カウンタには書き込むことができません。リモート コンピュータに接続する PerformanceCounter クラスの読み取り/書き込みインスタンスを指定できるオーバーロードはありません。 |
パフォーマンス カテゴリ インスタンスを作成するには、PerformanceCounter コンストラクタで instanceName を指定します。instanceName で指定されたカテゴリ インスタンスが既に存在する場合、新しいオブジェクトは既存のカテゴリ インスタンスを参照します。


Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


PerformanceCounter コンストラクタ


PerformanceCounter コンストラクタ (String, String, String)
アセンブリ: System (system.dll 内)

Dim categoryName As String Dim counterName As String Dim instanceName As String Dim instance As New PerformanceCounter(categoryName, counterName, instanceName)
public function PerformanceCounter ( categoryName : String, counterName : String, instanceName : String )
- categoryName
このパフォーマンス カウンタが関連付けられているパフォーマンス カウンタ カテゴリ (パフォーマンス オブジェクト) の名前。
- counterName
パフォーマンス カウンタの名前。

例外の種類 | 条件 |
---|---|
InvalidOperationException | categoryName が空の文字列 ("") です。 または counterName が空の文字列 ("") です。 または または 指定されたカテゴリは複数インスタンスとしてマークされているため、インスタンス名を使用してパフォーマンス カウンタを作成する必要があります。 または |
ArgumentNullException | categoryName パラメータまたは counterName パラメータが null 参照 (Visual Basic では Nothing) です。 |
Win32Exception | |
PlatformNotSupportedException | プラットフォームが Windows 98 または Windows Millennium Edition (Me) です。パフォーマンス カウンタはサポートされません。 |

このコンストラクタのオーバーロードによって、CategoryName、CounterName、InstanceName の各プロパティが渡された値に設定され、MachineName プロパティがローカル コンピュータ "." に設定されます。
このコンストラクタは、パフォーマンス カウンタを初期化し、インスタンスをローカル コンピュータの既存のカウンタ (システム カウンタまたはカスタム カウンタ) に関連付けます。CategoryName、CounterName、InstanceName の各プロパティに渡す値は、ローカル コンピュータの既存のパフォーマンス カウンタを指す必要があります。指しているパフォーマンス カウンタ インスタンスが無効の場合は、コンストラクタを呼び出すと例外がスローされます。
このオーバーロードは、読み取り専用カウンタまたは読み取り/書き込み可能カウンタにアクセスできますが、アクセス モードは読み取り専用です。このオーバーロードを使用して作成された PerformanceCounter インスタンスは、カウンタ自身が読み取り/書き込み可能でも、カウンタに書き込むことができません。
パフォーマンス カテゴリ インスタンスを作成するには、PerformanceCounter コンストラクタで instanceName を指定します。instanceName で指定されたカテゴリ インスタンスが既に存在する場合、新しいオブジェクトは既存のカテゴリ インスタンスを参照します。


Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


PerformanceCounter コンストラクタ (String, String)
アセンブリ: System (system.dll 内)

Dim categoryName As String Dim counterName As String Dim instance As New PerformanceCounter(categoryName, counterName)
- categoryName
このパフォーマンス カウンタが関連付けられているパフォーマンス カウンタ カテゴリ (パフォーマンス オブジェクト) の名前。
- counterName
パフォーマンス カウンタの名前。

例外の種類 | 条件 |
---|---|
InvalidOperationException | categoryName が空の文字列 ("") です。 または counterName が空の文字列 ("") です。 または または 指定されたカテゴリは複数インスタンスとしてマークされているため、インスタンス名を使用してパフォーマンス カウンタを作成する必要があります。 |
ArgumentNullException | categoryName パラメータまたは counterName パラメータが null 参照 (Visual Basic では Nothing) です。 |
Win32Exception | |
PlatformNotSupportedException | プラットフォームが Windows 98 または Windows Millennium Edition (Me) です。パフォーマンス カウンタはサポートされません。 |

このオーバーロードを使用して、1 つのパフォーマンス カウンタ カテゴリ インスタンスが含まれるカテゴリに属するローカル コンピュータのカウンタにアクセスします。このコンストラクタを使用して、この PerformanceCounter インスタンスで複数のインスタンスが含まれるカテゴリを指そうとすると、例外がスローされます。このオーバーロードは、読み取り専用カウンタまたは読み取り/書き込み可能カウンタにアクセスできますが、アクセス モードは読み取り専用です。このオーバーロードを使用して作成された PerformanceCounter インスタンスは、カウンタ自身が読み取り/書き込み可能でも、カウンタに書き込むことができません。
このコンストラクタのオーバーロードによって、CategoryName プロパティと CounterName プロパティが渡された値に設定され、MachineName プロパティがローカル コンピュータ "." に設定され、InstanceName プロパティが空の文字列 (".") に設定されます。
このコンストラクタは、パフォーマンス カウンタを初期化し、インスタンスをローカル コンピュータの既存のカウンタ (システム カウンタまたはカスタム カウンタ) に関連付けます。CategoryName プロパティと CounterName プロパティに渡す値は、ローカル コンピュータの既存のパフォーマンス カウンタを指す必要があります。


Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


PerformanceCounter フィールド
PerformanceCounter プロパティ

名前 | 説明 | |
---|---|---|
![]() | CategoryName | このパフォーマンス カウンタのパフォーマンス カウンタ カテゴリ名を取得または設定します。 |
![]() | Container | Component を格納している IContainer を取得します。 ( Component から継承されます。) |
![]() | CounterHelp | このパフォーマンス カウンタの説明を取得します。 |
![]() | CounterName | この PerformanceCounter インスタンスに関連付けられているパフォーマンス カウンタ名を取得または設定します。 |
![]() | CounterType | 関連付けられているパフォーマンス カウンタのカウンタ タイプを取得します。 |
![]() | InstanceLifetime | プロセスの有効期間を取得または設定します。 |
![]() | InstanceName | このパフォーマンス カウンタのインスタンス名を取得または設定します。 |
![]() | MachineName | このパフォーマンス カウンタのコンピュータ名を取得または設定します。 |
![]() | RawValue | このカウンタの、生の、つまり計算されない値を取得または設定します。 |
![]() | ReadOnly | この PerformanceCounter インスタンスが読み取り専用モードかどうかを示す値を取得または設定します。 |
![]() | Site | Component の ISite を取得または設定します。 ( Component から継承されます。) |

PerformanceCounter メソッド


名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 ( Object から継承されます。) |
![]() | MemberwiseClone | オーバーロードされます。 ( MarshalByRefObject から継承されます。) |

PerformanceCounter メンバ
Windows NT パフォーマンス カウンタ コンポーネントを表します。
PerformanceCounter データ型で公開されるメンバを以下の表に示します。


名前 | 説明 | |
---|---|---|
![]() | DefaultFileMappingSize |

名前 | 説明 | |
---|---|---|
![]() | CategoryName | このパフォーマンス カウンタのパフォーマンス カウンタ カテゴリ名を取得または設定します。 |
![]() | Container | Component を格納している IContainer を取得します。(Component から継承されます。) |
![]() | CounterHelp | このパフォーマンス カウンタの説明を取得します。 |
![]() | CounterName | この PerformanceCounter インスタンスに関連付けられているパフォーマンス カウンタ名を取得または設定します。 |
![]() | CounterType | 関連付けられているパフォーマンス カウンタのカウンタ タイプを取得します。 |
![]() | InstanceLifetime | プロセスの有効期間を取得または設定します。 |
![]() | InstanceName | このパフォーマンス カウンタのインスタンス名を取得または設定します。 |
![]() | MachineName | このパフォーマンス カウンタのコンピュータ名を取得または設定します。 |
![]() | RawValue | このカウンタの、生の、つまり計算されない値を取得または設定します。 |
![]() | ReadOnly | この PerformanceCounter インスタンスが読み取り専用モードかどうかを示す値を取得または設定します。 |
![]() | Site | Component の ISite を取得または設定します。(Component から継承されます。) |


名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。) |
![]() | MemberwiseClone | オーバーロードされます。 ( MarshalByRefObject から継承されます。) |


- performance counterのページへのリンク