Bagikan melalui


PerformanceCounterCategory Kelas

Definisi

Mewakili objek performa, yang mendefinisikan kategori penghitung kinerja.

public ref class PerformanceCounterCategory sealed
public sealed class PerformanceCounterCategory
type PerformanceCounterCategory = class
Public NotInheritable Class PerformanceCounterCategory
Warisan
PerformanceCounterCategory

Contoh

Contoh kode berikut menentukan apakah dan PerformanceCounterPerformanceCounterCategory ada di komputer lokal atau di komputer lain. Jika objek ini tidak ada di komputer lokal, contohnya secara opsional membuatnya. Ini menggunakan Exists metode untuk menentukan apakah PerformanceCounterCategory ada. PerformanceCounterCategory Jika tidak ada dan tidak ada nama penghitung yang ditentukan, atau jika komputer adalah komputer jarak jauh, contoh keluar.

PerformanceCounter Jika nama disediakan, contohnya menggunakan CounterExists metode dan menampilkan hasilnya kepada pengguna. PerformanceCounter Jika tidak ada, pengguna dapat menghapus dan membuat PerformanceCounterCategory ulang dengan yang baruPerformanceCounter. Jika pengguna melakukannya, kategori dihapus menggunakan Delete metode .

Jika diminta, contoh sekarang membuat yang baru PerformanceCounterCategory dan PerformanceCounter menggunakan Create metode . Jika nama instans InstanceExists ditentukan, contohnya menggunakan metode dan menampilkan hasilnya.

using System;
using System.Diagnostics;
using Microsoft.VisualBasic;

class PerfCounterCatCreateExistMod
{

    public static void Main(string[] args)
    {
        string categoryName = "";
        string counterName = "";
        string instanceName = "";
        string machineName = "";
        string categoryHelp = "";
        string counterHelp = "";
        bool objectExists = false;
        PerformanceCounterCategory pcc;
        bool createCategory = false;

        // Copy the supplied arguments into the local variables.
        try
        {
            categoryName = args[0];
            counterName = args[1];
            instanceName = args[2];
            machineName = args[3]=="."? "": args[3];
            categoryHelp = args[4];
            counterHelp = args[5];
        }
        catch(Exception ex)
        {
            // Ignore the exception from non-supplied arguments.
        }

        // Verify that the category name is not blank.
        if (categoryName.Length==0)
        {
            Console.WriteLine("Category name cannot be blank.");
            return;
        }

        // Check whether the specified category exists.
        if (machineName.Length==0)
        {
            objectExists = PerformanceCounterCategory.Exists(categoryName);

        }
        else
        {
            // Handle the exception that is thrown if the computer
            // cannot be found.
            try
            {
                objectExists = PerformanceCounterCategory.Exists(categoryName, machineName);
            }
            catch(Exception ex)
            {
                Console.WriteLine("Error checking for existence of " +
                    "category \"{0}\" on computer \"{1}\":"+"\n" +ex.Message, categoryName, machineName);
                return;
            }
        }

        // Tell the user whether the specified category exists.
        Console.WriteLine("Category \"{0}\" "+ (objectExists? "exists on ": "does not exist on ")+
            (machineName.Length>0? "computer \"{1}\".": "this computer."), categoryName, machineName);

        // If no counter name is given, the program cannot continue.
        if (counterName.Length==0)
        {
            return;
        }

        // A category can only be created on the local computer.
        if (!objectExists)
        {
            if (machineName.Length>0)
            {
                return;
            }
            else
            {
                createCategory = true;
            }
        }
        else
        {
            // Check whether the specified counter exists.
            if (machineName.Length==0)
            {
                objectExists = PerformanceCounterCategory.CounterExists(counterName, categoryName);
            }
            else
            {
                objectExists = PerformanceCounterCategory.CounterExists(counterName, categoryName, machineName);
            }

            // Tell the user whether the counter exists.
            Console.WriteLine("Counter \"{0}\" "+(objectExists? "exists": "does not exist")+
                " in category \"{1}\" on "+(machineName.Length>0? "computer \"{2}\".": "this computer."),
                counterName, categoryName, machineName);

            // If the counter does not exist, consider creating it.
            if (!objectExists)

                // If this is a remote computer,
                // exit because the category cannot be created.
            {
                if (machineName.Length>0)
                {
                    return;
                }
                else
                {
                    // Ask whether the user wants to recreate the category.
                    Console.Write("Do you want to delete and recreate " +
                        "category \"{0}\" with your new counter? [Y/N]: ", categoryName);
                    string userReply = Console.ReadLine();

                    // If yes, delete the category so it can be recreated later.
                    if (userReply.Trim().ToUpper()=="Y")
                    {
                        PerformanceCounterCategory.Delete(categoryName);
                        createCategory = true;
                    }
                    else
                    {
                        return;
                    }
                }
            }
        }

        // Create the category if it was deleted or it never existed.
        if (createCategory)
        {
            pcc = PerformanceCounterCategory.Create(categoryName, categoryHelp, counterName, counterHelp);

            Console.WriteLine("Category \"{0}\" with counter \"{1}\" created.", pcc.CategoryName, counterName);
        }
        else if(instanceName.Length>0)
        {
            if (machineName.Length==0)
            {
                objectExists = PerformanceCounterCategory.InstanceExists(instanceName, categoryName);
            }
            else
            {
                objectExists = PerformanceCounterCategory.InstanceExists(instanceName, categoryName, machineName);
            }

            // Tell the user whether the instance exists.
            Console.WriteLine("Instance \"{0}\" "+(objectExists? "exists": "does not exist")+
                " in category \"{1}\" on " + (machineName.Length>0? "computer \"{2}\".": "this computer."),
                instanceName, categoryName, machineName);
        }
    }
}
Imports System.Diagnostics

Module PerfCounterCatCreateExistMod

    Sub Main(ByVal args() As String)
        Dim categoryName As String = ""
        Dim counterName As String = ""
        Dim instanceName As String = ""
        Dim machineName As String = ""
        Dim categoryHelp As String = ""
        Dim counterHelp As String = ""
        Dim objectExists As Boolean = False
        Dim pcc As PerformanceCounterCategory
        Dim createCategory As Boolean = False

        ' Copy the supplied arguments into the local variables.
        Try
            categoryName = args(0)
            counterName = args(1)
            instanceName = args(2)
            machineName = IIf(args(3) = ".", "", args(3))
            categoryHelp = args(4)
            counterHelp = args(5)
        Catch ex As Exception
            ' Ignore the exception from non-supplied arguments.
        End Try

        ' Verify that the category name is not blank.
        If categoryName.Length = 0 Then
            Console.WriteLine("Category name cannot be blank.")
            Return
        End If

        ' Check whether the specified category exists.
        If machineName.Length = 0 Then
            objectExists = _
                PerformanceCounterCategory.Exists(categoryName)

        Else
            ' Handle the exception that is thrown if the computer 
            ' cannot be found.
            Try
                objectExists = PerformanceCounterCategory.Exists( _
                    categoryName, machineName)
            Catch ex As Exception
                Console.WriteLine("Error checking for existence of " & _
                    "category ""{0}"" on computer ""{1}"":" & vbCrLf & _
                    ex.Message, categoryName, machineName)
                Return
            End Try
        End If

        ' Tell the user whether the specified category exists.
        Console.WriteLine("Category ""{0}"" " & _
            IIf(objectExists, "exists on ", "does not exist on ") & _
            IIf(machineName.Length > 0, _
                "computer ""{1}"".", "this computer."), _
            categoryName, machineName)

        ' If no counter name is given, the program cannot continue.
        If counterName.Length = 0 Then
            Return
        End If

        ' A category can only be created on the local computer.
        If Not objectExists Then
            If machineName.Length > 0 Then
                Return
            Else
                createCategory = True
            End If
        Else
            ' Check whether the specified counter exists.
            If machineName.Length = 0 Then
                objectExists = PerformanceCounterCategory.CounterExists( _
                    counterName, categoryName)
            Else
                objectExists = PerformanceCounterCategory.CounterExists( _
                    counterName, categoryName, machineName)
            End If

            ' Tell the user whether the counter exists.
            Console.WriteLine("Counter ""{0}"" " & _
                IIf(objectExists, "exists", "does not exist") & _
                " in category ""{1}"" on " & _
                IIf(machineName.Length > 0, _
                    "computer ""{2}"".", "this computer."), _
                counterName, categoryName, machineName)

            ' If the counter does not exist, consider creating it.
            If Not objectExists Then

                ' If this is a remote computer, 
                ' exit because the category cannot be created.
                If machineName.Length > 0 Then
                    Return
                Else
                    ' Ask whether the user wants to recreate the category.
                    Console.Write("Do you want to delete and recreate " & _
                        "category ""{0}"" with your new counter? [Y/N]: ", _
                        categoryName)
                    Dim userReply As String = Console.ReadLine()

                    ' If yes, delete the category so it can be recreated later.
                    If userReply.Trim.ToUpper.Chars(0) = "Y" Then
                        PerformanceCounterCategory.Delete(categoryName)
                        createCategory = True
                    Else
                        Return
                    End If
                End If
            End If
        End If

        ' Create the category if it was deleted or it never existed.
        If createCategory Then
            pcc = PerformanceCounterCategory.Create( _
                categoryName, categoryHelp, counterName, counterHelp)

            Console.WriteLine( _
                "Category ""{0}"" with counter ""{1}"" created.", _
                pcc.CategoryName, counterName)

        ElseIf instanceName.Length > 0 Then

            ' If an instance name was given, check whether it exists.
            If machineName.Length = 0 Then
                objectExists = PerformanceCounterCategory.InstanceExists( _
                    instanceName, categoryName)
            Else
                objectExists = PerformanceCounterCategory.InstanceExists( _
                    instanceName, categoryName, machineName)
            End If

            ' Tell the user whether the instance exists.
            Console.WriteLine("Instance ""{0}"" " & _
                IIf(objectExists, "exists", "does not exist") & _
                " in category ""{1}"" on " & _
                IIf(machineName.Length > 0, _
                    "computer ""{2}"".", "this computer."), _
                instanceName, categoryName, machineName)
        End If
    End Sub
End Module

Keterangan

Penting

Membuat atau menghapus penghitung kinerja memerlukan sinkronisasi kode yang mendasar dengan menggunakan mutex bernama. Jika aplikasi yang sangat istimewa mengunci mutex bernama, upaya untuk membuat atau menghapus penghitung kinerja menyebabkan aplikasi berhenti merespons hingga kunci dilepaskan. Untuk membantu menghindari masalah ini, jangan pernah memberikan UnmanagedCode izin ke kode yang tidak tepercaya. Selain itu, UnmanagedCode izin berpotensi memungkinkan izin lain dilewati dan hanya boleh diberikan ke kode yang sangat tepercaya.

Properti PerformanceCounterCategory instans CategoryName ditampilkan di bidang Objek Performa dari kotak dialog Tambahkan Penghitung aplikasi Penampil Performa.

Kelas ini PerformanceCounterCategory menyediakan beberapa metode untuk berinteraksi dengan penghitung dan kategori di komputer. Metode ini Create memungkinkan Anda menentukan kategori kustom. Metode ini Delete menyediakan cara untuk menghapus kategori dari komputer. Metode ini GetCategories memungkinkan Anda untuk melihat daftar kategori, sambil mengambil semua penghitung ReadCategory dan data instans yang terkait dengan satu kategori.

Penghitung kinerja menerbitkan data performa tentang aplikasi. Kategori termasuk komponen fisik (seperti prosesor, disk, dan memori) dan objek sistem (seperti proses dan utas). Penghitung sistem yang terkait dengan objek performa yang sama dikelompokkan ke dalam kategori yang menunjukkan fokus umumnya. Saat Anda membuat instans PerformanceCounter kelas , Anda terlebih dahulu menunjukkan kategori yang akan berinteraksi dengan komponen, lalu Anda memilih penghitung dari kategori tersebut.

Misalnya, satu kategori penghitung Windows adalah kategori Memori. Penghitung sistem dalam kategori ini melacak data memori seperti jumlah byte yang tersedia dan jumlah byte yang di-cache. Jika Anda ingin bekerja dengan byte yang di-cache di aplikasi Anda, Anda akan membuat instans PerformanceCounter komponen, menghubungkannya ke kategori Memori, lalu memilih penghitung yang sesuai (dalam hal ini, Byte Singgahan) dari kategori tersebut.

Meskipun sistem Anda membuat lebih banyak kategori penghitung tersedia, kategori yang mungkin paling sering berinteraksi dengan Anda adalah kategori Cache, Memori, Objek, PhysicalDisk, Proses, Prosesor, Server, Sistem, dan Utas.

Penting

Metode RemoveInstance di PerformanceCounter kelas akan merilis penghitung dan, jika opsi penggunaan kembali dipilih untuk kategori tersebut, instans penghitung akan digunakan kembali. Ini dapat menyebabkan kondisi balapan jika proses lain atau bahkan bagian lain dari kode mencoba menulis ke instans penghitung.

Catatan

Sangat disarankan agar kategori penghitung kinerja baru dibuat selama penginstalan aplikasi, bukan selama eksekusi aplikasi. Ini memungkinkan waktu bagi sistem operasi untuk me-refresh daftar kategori penghitung kinerja terdaftar. Jika daftar belum disegarkan, upaya untuk menggunakan kategori akan gagal.

Catatan

Kategori penghitung kinerja yang diinstal dengan .NET Framework 2.0 menggunakan memori bersama terpisah, dengan setiap kategori penghitung kinerja memiliki memorinya sendiri. Anda dapat menentukan ukuran memori bersama terpisah dengan membuat DWORD bernama FileMappingSize di kunci registri HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<nama> kategori\Performa. Nilai FileMappingSize diatur ke ukuran memori bersama kategori. Ukuran defaultnya adalah 131072 desimal. Jika nilai FileMappingSize tidak ada, fileMappingSize nilai atribut untuk performanceCounters elemen yang ditentukan dalam file Machine.config digunakan, menyebabkan overhead tambahan untuk pemrosesan file konfigurasi. Anda dapat mewujudkan peningkatan performa untuk startup aplikasi dengan mengatur ukuran pemetaan file di registri. Untuk informasi selengkapnya tentang ukuran pemetaan file, lihat <performanceCounters>.

Konstruktor

PerformanceCounterCategory()

Menginisialisasi instans PerformanceCounterCategory baru kelas, membiarkan CategoryName properti kosong, dan mengatur MachineName properti ke komputer lokal.

PerformanceCounterCategory(String)

Menginisialisasi instans PerformanceCounterCategory baru kelas, mengatur CategoryName properti ke nilai yang ditentukan, dan mengatur MachineName properti ke komputer lokal.

PerformanceCounterCategory(String, String)

Menginisialisasi instans PerformanceCounterCategory baru kelas dan mengatur CategoryName properti dan MachineName ke nilai yang ditentukan.

Properti

CategoryHelp

Mendapatkan teks bantuan kategori.

CategoryName

Mendapatkan atau mengatur nama objek performa yang menentukan kategori ini.

CategoryType

Mendapatkan jenis kategori penghitung kinerja.

MachineName

Mendapatkan atau menyetel nama komputer tempat kategori ini ada.

Metode

CounterExists(String)

Menentukan apakah penghitung yang ditentukan terdaftar untuk kategori ini, yang ditunjukkan oleh CategoryName properti dan MachineName .

CounterExists(String, String)

Menentukan apakah penghitung yang ditentukan didaftarkan ke kategori yang ditentukan pada komputer lokal.

CounterExists(String, String, String)

Menentukan apakah penghitung yang ditentukan didaftarkan ke kategori yang ditentukan pada komputer jarak jauh.

Create(String, String, CounterCreationDataCollection)
Kedaluwarsa.
Kedaluwarsa.
Kedaluwarsa.

Mendaftarkan kategori penghitung kinerja kustom yang berisi penghitung yang ditentukan di komputer lokal.

Create(String, String, PerformanceCounterCategoryType, CounterCreationDataCollection)

Mendaftarkan kategori penghitung kinerja kustom yang berisi penghitung yang ditentukan di komputer lokal.

Create(String, String, PerformanceCounterCategoryType, String, String)

Mendaftarkan kategori penghitung kinerja kustom yang berisi penghitung tunggal jenis NumberOfItems32 di komputer lokal.

Create(String, String, String, String)
Kedaluwarsa.
Kedaluwarsa.
Kedaluwarsa.

Mendaftarkan kategori penghitung kinerja kustom yang berisi penghitung tunggal jenis NumberOfItems32 di komputer lokal.

Delete(String)

Menghapus kategori dan penghitung terkait dari komputer lokal.

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
Exists(String)

Menentukan apakah kategori terdaftar di komputer lokal.

Exists(String, String)

Menentukan apakah kategori terdaftar pada komputer yang ditentukan.

GetCategories()

Mengambil daftar kategori penghitung kinerja yang terdaftar di komputer lokal.

GetCategories(String)

Mengambil daftar kategori penghitung kinerja yang terdaftar di komputer yang ditentukan.

GetCounters()

Mengambil daftar penghitung dalam kategori penghitung kinerja yang berisi tepat satu instans.

GetCounters(String)

Mengambil daftar penghitung dalam kategori penghitung kinerja yang berisi satu atau beberapa instans.

GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetInstanceNames()

Mengambil daftar instans objek performa yang terkait dengan kategori ini.

GetType()

Mendapatkan dari instans Type saat ini.

(Diperoleh dari Object)
InstanceExists(String)

Menentukan apakah instans objek performa yang ditentukan ada dalam kategori yang diidentifikasi oleh properti objek CategoryName iniPerformanceCounterCategory.

InstanceExists(String, String)

Menentukan apakah kategori yang ditentukan pada komputer lokal berisi instans objek performa yang ditentukan.

InstanceExists(String, String, String)

Menentukan apakah kategori yang ditentukan pada komputer tertentu berisi instans objek performa yang ditentukan.

MemberwiseClone()

Membuat salinan dangkal dari saat ini Object.

(Diperoleh dari Object)
ReadCategory()

Membaca semua data instans penghitung dan objek performa yang terkait dengan kategori penghitung kinerja ini.

ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)

Berlaku untuk

Lihat juga