PerformanceCounterCategory.GetCounters Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera listę liczników w tej kategorii liczników wydajności.
Przeciążenia
GetCounters() |
Pobiera listę liczników w kategorii liczników wydajności, która zawiera dokładnie jedno wystąpienie. |
GetCounters(String) |
Pobiera listę liczników w kategorii licznika wydajności, która zawiera co najmniej jedno wystąpienie. |
GetCounters()
Pobiera listę liczników w kategorii liczników wydajności, która zawiera dokładnie jedno wystąpienie.
public:
cli::array <System::Diagnostics::PerformanceCounter ^> ^ GetCounters();
public System.Diagnostics.PerformanceCounter[] GetCounters ();
member this.GetCounters : unit -> System.Diagnostics.PerformanceCounter[]
Public Function GetCounters () As PerformanceCounter()
Zwraca
Tablica PerformanceCounter obiektów wskazująca liczniki skojarzone z tą kategorią licznika wydajności pojedynczego wystąpienia.
Wyjątki
Kategoria nie jest pojedynczym wystąpieniem.
Wywołanie podstawowego interfejsu API systemu nie powiodło się.
Kategoria nie ma skojarzonego wystąpienia.
Kod wykonywany bez uprawnień administracyjnych próbował odczytać licznik wydajności.
Przykłady
Poniższy przykład kodu pobiera listę PerformanceCounter obiektów w obiekcie PerformanceCounterCategory. Najpierw tworzy element PerformanceCounterCategory z odpowiednim konstruktorem na podstawie tego, czy określono nazwę komputera. Następnie używa GetCounters metody , aby zwrócić tablicę PerformanceCounter obiektów, wybierając GetCounters przeciążenie na podstawie tego, czy określono nazwę wystąpienia.
To GetCounters() przeciążenie kończy się niepowodzeniem, chyba że jest używane z kategorią pojedynczego wystąpienia.
public:
static void Main(array<String^>^ args)
{
String^ categoryName = "";
String^ machineName = "";
String^ instanceName = "";
PerformanceCounterCategory^ pcc;
array<PerformanceCounter^>^ counters;
// Copy the supplied arguments into the local variables.
try
{
categoryName = args[1];
machineName = args[2]=="."? "": args[2];
instanceName = args[3];
}
catch (...)
{
// Ignore the exception from non-supplied arguments.
}
try
{
// Create the appropriate PerformanceCounterCategory object.
if (machineName->Length>0)
{
pcc = gcnew PerformanceCounterCategory(categoryName, machineName);
}
else
{
pcc = gcnew PerformanceCounterCategory(categoryName);
}
// Get the counters for this instance or a single instance
// of the selected category.
if (instanceName->Length > 0)
{
counters = pcc->GetCounters(instanceName);
}
else
{
counters = pcc->GetCounters();
}
}
catch (Exception^ ex)
{
Console::WriteLine("Unable to get counter information for " +
(instanceName->Length>0? "instance \"{2}\" in ": "single-instance ") +
"category \"{0}\" on " + (machineName->Length>0? "computer \"{1}\":": "this computer:"),
categoryName, machineName, instanceName);
Console::WriteLine(ex->Message);
return;
}
// Display the counter names if GetCounters was successful.
if (counters != nullptr)
{
Console::WriteLine("These counters exist in " +
(instanceName->Length > 0 ? "instance \"{1}\" of" : "single instance") +
" category {0} on " + (machineName->Length > 0 ? "computer \"{2}\":": "this computer:"),
categoryName, instanceName, machineName);
// Display a numbered list of the counter names.
int objX;
for(objX = 0; objX < counters->Length; objX++)
{
Console::WriteLine("{0,4} - {1}", objX + 1, counters[objX]->CounterName);
}
}
}
public static void Main(string[] args)
{
string categoryName = "";
string machineName = "";
string instanceName = "";
PerformanceCounterCategory pcc;
PerformanceCounter[] counters;
// Copy the supplied arguments into the local variables.
try
{
categoryName = args[0];
machineName = args[1]=="."? "": args[1];
instanceName = args[2];
}
catch
{
// Ignore the exception from non-supplied arguments.
}
try
{
// Create the appropriate PerformanceCounterCategory object.
if (machineName.Length>0)
{
pcc = new PerformanceCounterCategory(categoryName, machineName);
}
else
{
pcc = new PerformanceCounterCategory(categoryName);
}
// Get the counters for this instance or a single instance
// of the selected category.
if (instanceName.Length>0)
{
counters = pcc.GetCounters(instanceName);
}
else
{
counters = pcc.GetCounters();
}
}
catch(Exception ex)
{
Console.WriteLine("Unable to get counter information for " +
(instanceName.Length>0? "instance \"{2}\" in ": "single-instance ") +
"category \"{0}\" on " + (machineName.Length>0? "computer \"{1}\":": "this computer:"),
categoryName, machineName, instanceName);
Console.WriteLine(ex.Message);
return;
}
// Display the counter names if GetCounters was successful.
if (counters!=null)
{
Console.WriteLine("These counters exist in " +
(instanceName.Length>0? "instance \"{1}\" of": "single instance") +
" category {0} on " + (machineName.Length>0? "computer \"{2}\":": "this computer:"),
categoryName, instanceName, machineName);
// Display a numbered list of the counter names.
int objX;
for(objX=0; objX<counters.Length; objX++)
{
Console.WriteLine("{0,4} - {1}", objX+1, counters[objX].CounterName);
}
}
}
Sub Main(ByVal args() As String)
Dim categoryName As String = ""
Dim machineName As String = ""
Dim instanceName As String = ""
Dim pcc As PerformanceCounterCategory
Dim counters() As PerformanceCounter
' Copy the supplied arguments into the local variables.
Try
categoryName = args(0)
machineName = IIf(args(1) = ".", "", args(1))
instanceName = args(2)
Catch ex As Exception
' Ignore the exception from non-supplied arguments.
End Try
Try
' Create the appropriate PerformanceCounterCategory object.
If machineName.Length > 0 Then
pcc = New PerformanceCounterCategory(categoryName, machineName)
Else
pcc = New PerformanceCounterCategory(categoryName)
End If
' Get the counters for this instance or a single instance
' of the selected category.
If instanceName.Length > 0 Then
counters = pcc.GetCounters(instanceName)
Else
counters = pcc.GetCounters()
End If
Catch ex As Exception
Console.WriteLine("Unable to get counter information for " & _
IIf(instanceName.Length > 0, "instance ""{2}"" in ", _
"single-instance ") & "category ""{0}"" on " & _
IIf(machineName.Length > 0, "computer ""{1}"":", _
"this computer:"), _
categoryName, machineName, instanceName)
Console.WriteLine(ex.Message)
Return
End Try
' Display the counter names if GetCounters was successful.
If Not counters Is Nothing Then
Console.WriteLine("These counters exist in " & _
IIf(instanceName.Length > 0, "instance ""{1}"" of", _
"single instance") & " category {0} on " & _
IIf(machineName.Length > 0, _
"computer ""{2}"":", "this computer:"), _
categoryName, instanceName, machineName)
' Display a numbered list of the counter names.
Dim objX As Integer
For objX = 0 To counters.Length - 1
Console.WriteLine("{0,4} - {1}", objX + 1, _
counters(objX).CounterName)
Next objX
End If
End Sub
Uwagi
Aby uzyskać więcej informacji na temat wystąpień obiektów wydajności, zobacz PerformanceCounter omówienie klasy.
Uwaga
Aby odczytać liczniki wydajności z sesji logowania nieinterakcyjnego w systemie Windows Vista lub nowszym, Windows XP Professional x64 Edition lub Windows Server 2003, musisz być członkiem grupy użytkownicy monitor wydajności lub mieć uprawnienia administracyjne.
Aby uniknąć konieczności podniesienia uprawnień dostępu do liczników wydajności w systemie Windows Vista i nowszych, dodaj się do grupy użytkownicy monitor wydajności.
W systemie Windows Vista i nowszych Kontrola konta użytkownika (UAC) określa uprawnienia użytkownika. Jeśli jesteś członkiem wbudowanej grupy Administratorzy, masz przypisane dwa tokeny dostępu w czasie wykonywania: token dostępu użytkownika standardowego i token dostępu administratora. Domyślnie jesteś w roli użytkownika standardowego. Aby wykonać kod, który uzyskuje dostęp do liczników wydajności, musisz najpierw podnieść poziom uprawnień od użytkownika standardowego do administratora. Możesz to zrobić po uruchomieniu aplikacji, klikając prawym przyciskiem myszy ikonę aplikacji i wskazując, że chcesz uruchomić jako administrator.
Zobacz też
Dotyczy
GetCounters(String)
Pobiera listę liczników w kategorii licznika wydajności, która zawiera co najmniej jedno wystąpienie.
public:
cli::array <System::Diagnostics::PerformanceCounter ^> ^ GetCounters(System::String ^ instanceName);
public System.Diagnostics.PerformanceCounter[] GetCounters (string instanceName);
member this.GetCounters : string -> System.Diagnostics.PerformanceCounter[]
Public Function GetCounters (instanceName As String) As PerformanceCounter()
Parametry
- instanceName
- String
Wystąpienie obiektu wydajności, dla którego ma być pobierana lista skojarzonych liczników.
Zwraca
Tablica PerformanceCounter obiektów wskazująca liczniki skojarzone z określonym wystąpieniem obiektu tej kategorii licznika wydajności.
Wyjątki
Parametr instanceName
to null
.
Właściwość CategoryName dla tego PerformanceCounterCategory wystąpienia nie została ustawiona.
-lub-
Kategoria nie zawiera wystąpienia określonego instanceName
przez parametr .
Wywołanie podstawowego interfejsu API systemu nie powiodło się.
Kod wykonywany bez uprawnień administracyjnych próbował odczytać licznik wydajności.
Przykłady
Poniższy przykład kodu pobiera listę PerformanceCounter obiektów w obiekcie PerformanceCounterCategory. Najpierw tworzy element PerformanceCounterCategory z odpowiednim konstruktorem na podstawie tego, czy określono nazwę komputera. Następnie używa GetCounters metody , aby zwrócić tablicę PerformanceCounter obiektów, wybierając GetCounters przeciążenie na podstawie tego, czy określono nazwę wystąpienia.
To GetCounters(String) przeciążenie kończy się niepowodzeniem, chyba że jest używane z kategorią zawierającą wystąpienia.
public:
static void Main(array<String^>^ args)
{
String^ categoryName = "";
String^ machineName = "";
String^ instanceName = "";
PerformanceCounterCategory^ pcc;
array<PerformanceCounter^>^ counters;
// Copy the supplied arguments into the local variables.
try
{
categoryName = args[1];
machineName = args[2]=="."? "": args[2];
instanceName = args[3];
}
catch (...)
{
// Ignore the exception from non-supplied arguments.
}
try
{
// Create the appropriate PerformanceCounterCategory object.
if (machineName->Length>0)
{
pcc = gcnew PerformanceCounterCategory(categoryName, machineName);
}
else
{
pcc = gcnew PerformanceCounterCategory(categoryName);
}
// Get the counters for this instance or a single instance
// of the selected category.
if (instanceName->Length > 0)
{
counters = pcc->GetCounters(instanceName);
}
else
{
counters = pcc->GetCounters();
}
}
catch (Exception^ ex)
{
Console::WriteLine("Unable to get counter information for " +
(instanceName->Length>0? "instance \"{2}\" in ": "single-instance ") +
"category \"{0}\" on " + (machineName->Length>0? "computer \"{1}\":": "this computer:"),
categoryName, machineName, instanceName);
Console::WriteLine(ex->Message);
return;
}
// Display the counter names if GetCounters was successful.
if (counters != nullptr)
{
Console::WriteLine("These counters exist in " +
(instanceName->Length > 0 ? "instance \"{1}\" of" : "single instance") +
" category {0} on " + (machineName->Length > 0 ? "computer \"{2}\":": "this computer:"),
categoryName, instanceName, machineName);
// Display a numbered list of the counter names.
int objX;
for(objX = 0; objX < counters->Length; objX++)
{
Console::WriteLine("{0,4} - {1}", objX + 1, counters[objX]->CounterName);
}
}
}
public static void Main(string[] args)
{
string categoryName = "";
string machineName = "";
string instanceName = "";
PerformanceCounterCategory pcc;
PerformanceCounter[] counters;
// Copy the supplied arguments into the local variables.
try
{
categoryName = args[0];
machineName = args[1]=="."? "": args[1];
instanceName = args[2];
}
catch
{
// Ignore the exception from non-supplied arguments.
}
try
{
// Create the appropriate PerformanceCounterCategory object.
if (machineName.Length>0)
{
pcc = new PerformanceCounterCategory(categoryName, machineName);
}
else
{
pcc = new PerformanceCounterCategory(categoryName);
}
// Get the counters for this instance or a single instance
// of the selected category.
if (instanceName.Length>0)
{
counters = pcc.GetCounters(instanceName);
}
else
{
counters = pcc.GetCounters();
}
}
catch(Exception ex)
{
Console.WriteLine("Unable to get counter information for " +
(instanceName.Length>0? "instance \"{2}\" in ": "single-instance ") +
"category \"{0}\" on " + (machineName.Length>0? "computer \"{1}\":": "this computer:"),
categoryName, machineName, instanceName);
Console.WriteLine(ex.Message);
return;
}
// Display the counter names if GetCounters was successful.
if (counters!=null)
{
Console.WriteLine("These counters exist in " +
(instanceName.Length>0? "instance \"{1}\" of": "single instance") +
" category {0} on " + (machineName.Length>0? "computer \"{2}\":": "this computer:"),
categoryName, instanceName, machineName);
// Display a numbered list of the counter names.
int objX;
for(objX=0; objX<counters.Length; objX++)
{
Console.WriteLine("{0,4} - {1}", objX+1, counters[objX].CounterName);
}
}
}
Sub Main(ByVal args() As String)
Dim categoryName As String = ""
Dim machineName As String = ""
Dim instanceName As String = ""
Dim pcc As PerformanceCounterCategory
Dim counters() As PerformanceCounter
' Copy the supplied arguments into the local variables.
Try
categoryName = args(0)
machineName = IIf(args(1) = ".", "", args(1))
instanceName = args(2)
Catch ex As Exception
' Ignore the exception from non-supplied arguments.
End Try
Try
' Create the appropriate PerformanceCounterCategory object.
If machineName.Length > 0 Then
pcc = New PerformanceCounterCategory(categoryName, machineName)
Else
pcc = New PerformanceCounterCategory(categoryName)
End If
' Get the counters for this instance or a single instance
' of the selected category.
If instanceName.Length > 0 Then
counters = pcc.GetCounters(instanceName)
Else
counters = pcc.GetCounters()
End If
Catch ex As Exception
Console.WriteLine("Unable to get counter information for " & _
IIf(instanceName.Length > 0, "instance ""{2}"" in ", _
"single-instance ") & "category ""{0}"" on " & _
IIf(machineName.Length > 0, "computer ""{1}"":", _
"this computer:"), _
categoryName, machineName, instanceName)
Console.WriteLine(ex.Message)
Return
End Try
' Display the counter names if GetCounters was successful.
If Not counters Is Nothing Then
Console.WriteLine("These counters exist in " & _
IIf(instanceName.Length > 0, "instance ""{1}"" of", _
"single instance") & " category {0} on " & _
IIf(machineName.Length > 0, _
"computer ""{2}"":", "this computer:"), _
categoryName, instanceName, machineName)
' Display a numbered list of the counter names.
Dim objX As Integer
For objX = 0 To counters.Length - 1
Console.WriteLine("{0,4} - {1}", objX + 1, _
counters(objX).CounterName)
Next objX
End If
End Sub
Uwagi
Aby reprezentować kategorię pojedynczego wystąpienia, przekaż pusty ciąg ("") dla parametru instanceName
.
Aby uzyskać więcej informacji na temat wystąpień obiektów wydajności, zobacz PerformanceCounter omówienie klasy.
Uwaga
Aby odczytać liczniki wydajności z sesji logowania nieinterakcyjnego w systemie Windows Vista lub nowszym, Windows XP Professional x64 Edition lub Windows Server 2003, musisz być członkiem grupy użytkownicy monitor wydajności lub mieć uprawnienia administracyjne.
Aby uniknąć konieczności podniesienia uprawnień dostępu do liczników wydajności w systemie Windows Vista i nowszych, dodaj się do grupy użytkownicy monitor wydajności.
W systemie Windows Vista i nowszych Kontrola konta użytkownika (UAC) określa uprawnienia użytkownika. Jeśli jesteś członkiem wbudowanej grupy Administratorzy, masz przypisane dwa tokeny dostępu w czasie wykonywania: token dostępu użytkownika standardowego i token dostępu administratora. Domyślnie jesteś w roli użytkownika standardowego. Aby wykonać kod, który uzyskuje dostęp do liczników wydajności, musisz najpierw podnieść poziom uprawnień od użytkownika standardowego do administratora. Możesz to zrobić po uruchomieniu aplikacji, klikając prawym przyciskiem myszy ikonę aplikacji i wskazując, że chcesz uruchomić jako administrator.