PerformanceCounterCategory.Create Метод

Определение

Регистрирует в системе пользовательскую категорию счетчиков производительности и один или несколько счетчиков.Registers a custom performance counter category and one or more counters with the system.

Перегрузки

Create(String, String, String, String)
Является устаревшей.
Является устаревшей.
Является устаревшей.

Регистрирует пользовательскую категорию счетчиков производительности, содержащую на локальном компьютере один счетчик типа NumberOfItems32.Registers a custom performance counter category containing a single counter of type NumberOfItems32 on the local computer.

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

Регистрирует пользовательскую категорию счетчиков производительности, содержащую на локальном компьютере один счетчик типа NumberOfItems32.Registers the custom performance counter category containing a single counter of type NumberOfItems32 on the local computer.

Create(String, String, CounterCreationDataCollection)
Является устаревшей.
Является устаревшей.
Является устаревшей.

Регистрирует пользовательскую категорию счетчиков производительности, содержащую указанные счетчики на локальном компьютере.Registers the custom performance counter category containing the specified counters on the local computer.

Create(String, String, PerformanceCounterCategoryType, CounterCreationDataCollection)

Регистрирует пользовательскую категорию счетчиков производительности, содержащую указанные счетчики на локальном компьютере.Registers the custom performance counter category containing the specified counters on the local computer.

Create(String, String, String, String)

Внимание!

This method has been deprecated. Please use System.Diagnostics.PerformanceCounterCategory.Create(string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, string counterName, string counterHelp) instead. http://go.microsoft.com/fwlink/?linkid=14202

Внимание!

This method has been deprecated. Please use System.Diagnostics.PerformanceCounterCategory.Create(string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, string counterName, string counterHelp) instead. https://go.microsoft.com/fwlink/?linkid=14202

Внимание!

Use another overload that uses PerformanceCounterCategoryType instead

Регистрирует пользовательскую категорию счетчиков производительности, содержащую на локальном компьютере один счетчик типа NumberOfItems32.Registers a custom performance counter category containing a single counter of type NumberOfItems32 on the local computer.

public:
 static System::Diagnostics::PerformanceCounterCategory ^ Create(System::String ^ categoryName, System::String ^ categoryHelp, System::String ^ counterName, System::String ^ counterHelp);
[System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.PerformanceCounterCategory.Create(string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, string counterName, string counterHelp) instead.  http://go.microsoft.com/fwlink/?linkid=14202")]
public static System.Diagnostics.PerformanceCounterCategory Create (string categoryName, string categoryHelp, string counterName, string counterHelp);
[System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.PerformanceCounterCategory.Create(string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, string counterName, string counterHelp) instead.  https://go.microsoft.com/fwlink/?linkid=14202")]
public static System.Diagnostics.PerformanceCounterCategory Create (string categoryName, string categoryHelp, string counterName, string counterHelp);
public static System.Diagnostics.PerformanceCounterCategory Create (string categoryName, string categoryHelp, string counterName, string counterHelp);
[System.Obsolete("Use another overload that uses PerformanceCounterCategoryType instead")]
public static System.Diagnostics.PerformanceCounterCategory Create (string categoryName, string categoryHelp, string counterName, string counterHelp);
[<System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.PerformanceCounterCategory.Create(string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, string counterName, string counterHelp) instead.  http://go.microsoft.com/fwlink/?linkid=14202")>]
static member Create : string * string * string * string -> System.Diagnostics.PerformanceCounterCategory
[<System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.PerformanceCounterCategory.Create(string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, string counterName, string counterHelp) instead.  https://go.microsoft.com/fwlink/?linkid=14202")>]
static member Create : string * string * string * string -> System.Diagnostics.PerformanceCounterCategory
static member Create : string * string * string * string -> System.Diagnostics.PerformanceCounterCategory
[<System.Obsolete("Use another overload that uses PerformanceCounterCategoryType instead")>]
static member Create : string * string * string * string -> System.Diagnostics.PerformanceCounterCategory
Public Shared Function Create (categoryName As String, categoryHelp As String, counterName As String, counterHelp As String) As PerformanceCounterCategory

Параметры

categoryName
String

Имя пользовательской категории счетчиков производительности, которую нужно создать и зарегистрировать в системе.The name of the custom performance counter category to create and register with the system.

categoryHelp
String

Описание пользовательской категории.A description of the custom category.

counterName
String

Имя нового счетчика типа NumberOfItems32, создаваемого в новой категории.The name of a new counter, of type NumberOfItems32, to create as part of the new category.

counterHelp
String

Описание счетчика, связанного с новой пользовательской категорией.A description of the counter that is associated with the new custom category.

Возвращаемое значение

PerformanceCounterCategory

Категория PerformanceCounterCategory, связанная с новой системной категорией, или объект производительности.A PerformanceCounterCategory that is associated with the new system category, or performance object.

Атрибуты

Исключения

Параметр counterName равен null или является пустой строкой ("").counterName is null or is an empty string ("").

-или--or- Счетчик, указанный параметром counterName, уже существует.The counter that is specified by counterName already exists.

-или--or- Синтаксис параметра counterName недопустим.counterName has invalid syntax. Возможно, значение параметра содержит обратную косую черту ("\") или его длина превышает 80 символов.It might contain backslash characters ("\") or have length greater than 80 characters.

Категория уже существует на локальном компьютере.The category already exists on the local computer.

categoryName имеет значение null.categoryName is null.

-или--or- counterHelp имеет значение null.counterHelp is null.

Сбой при вызове основного API системы.A call to an underlying system API failed.

Код, выполняющийся без привилегий администратора, предпринял попытку считывания значения счетчика производительности.Code that is executing without administrative privileges attempted to read a performance counter.

Примеры

В следующем примере кода создается PerformanceCounterCategory и один PerformanceCounter с текстом справки для каждой из них с помощью Create(String, String, String, String) метода.The following code example creates a PerformanceCounterCategory and single PerformanceCounter with help text for each, using the Create(String, String, String, String) method.

public static void Main(string[] args)
{
    string categoryName = "";
    string counterName = "";
    string categoryHelp = "";
    string counterHelp = "";
    PerformanceCounterCategory pcc;

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

    Console.WriteLine("Category name: \"{0}\"", categoryName);
    Console.WriteLine("Category help: \"{0}\"", categoryHelp);
    Console.WriteLine("Counter name:  \"{0}\"", counterName);
    Console.WriteLine("Counter help:  \"{0}\"", counterHelp);

    // Use the Create overload that creates a single counter.
    try
    {
        pcc = PerformanceCounterCategory.Create(categoryName, categoryHelp, counterName, counterHelp);
        Console.WriteLine("Category \"{0}\" created.", pcc.CategoryName);
    }
    catch(Exception ex)
    {
        Console.WriteLine("Unable to create the above category and counter:" + "\n" + ex.Message);
    }
}
Sub Main(ByVal args() As String)
    Dim categoryName As String = ""
    Dim counterName As String = ""
    Dim categoryHelp As String = ""
    Dim counterHelp As String = ""
    Dim pcc As PerformanceCounterCategory

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

    Console.WriteLine("Category name: ""{0}""", categoryName)
    Console.WriteLine("Category help: ""{0}""", categoryHelp)
    Console.WriteLine("Counter name:  ""{0}""", counterName)
    Console.WriteLine("Counter help:  ""{0}""", counterHelp)

    ' Use the Create overload that creates a single counter.
    Try
        pcc = PerformanceCounterCategory.Create( _
            categoryName, categoryHelp, counterName, counterHelp)
        Console.WriteLine("Category ""{0}"" created.", pcc.CategoryName)

    Catch ex As Exception
        Console.WriteLine( _
            "Unable to create the above category and counter:" & _
            vbCrLf & ex.Message)
    End Try
End Sub

Комментарии

Примечание

Для чтения счетчиков производительности из сеанса неинтерактивного входа в систему Windows Vista и более поздних версий, Windows XP Professional x64 Edition или Windows Server 2003 необходимо быть членом группы пользователей системного монитора или обладать правами администратора.To read performance counters from a non-interactive logon session in Windows Vista and later, Windows XP Professional x64 Edition, or Windows Server 2003, you must either be a member of the Performance Monitor Users group or have administrative privileges.

Чтобы не допустить повышения привилегий для доступа к счетчикам производительности в Windows Vista и более поздних версиях, добавьте себя в группу "Пользователи системного монитора".To avoid having to elevate your privileges to access performance counters in Windows Vista and later, add yourself to the Performance Monitor Users group.

В Windows Vista и более поздних версиях права доступа пользователя определяются контролем учетных записей.In Windows Vista and later, User Account Control (UAC) determines the privileges of a user. Члену встроенной группы "Администраторы" присваивается два маркера доступа на время выполнения: маркер доступа обычного пользователя и маркер доступа администратора.If you are a member of the Built-in Administrators group, you are assigned two run-time access tokens: a standard user access token and an administrator access token. По умолчанию назначена роль обычного пользователя.By default, you are in the standard user role. Чтобы выполнить код, обращающийся к счетчикам производительности, необходимо сначала повысить привилегии обычного пользователя до администратора.To execute the code that accesses performance counters, you must first elevate your privileges from standard user to administrator. Это можно сделать при запуске приложения, , щелкнув значок приложения правой кнопкой мыши и указав, что приложение должно запускаться от имени администратора.You can do this when you start an application by right-clicking the application icon and indicating that you want to run as an administrator.

См. также раздел

Применяется к

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

Регистрирует пользовательскую категорию счетчиков производительности, содержащую на локальном компьютере один счетчик типа NumberOfItems32.Registers the custom performance counter category containing a single counter of type NumberOfItems32 on the local computer.

public:
 static System::Diagnostics::PerformanceCounterCategory ^ Create(System::String ^ categoryName, System::String ^ categoryHelp, System::Diagnostics::PerformanceCounterCategoryType categoryType, System::String ^ counterName, System::String ^ counterHelp);
public static System.Diagnostics.PerformanceCounterCategory Create (string categoryName, string categoryHelp, System.Diagnostics.PerformanceCounterCategoryType categoryType, string counterName, string counterHelp);
static member Create : string * string * System.Diagnostics.PerformanceCounterCategoryType * string * string -> System.Diagnostics.PerformanceCounterCategory
Public Shared Function Create (categoryName As String, categoryHelp As String, categoryType As PerformanceCounterCategoryType, counterName As String, counterHelp As String) As PerformanceCounterCategory

Параметры

categoryName
String

Имя пользовательской категории счетчиков производительности, которую нужно создать и зарегистрировать в системе.The name of the custom performance counter category to create and register with the system.

categoryHelp
String

Описание пользовательской категории.A description of the custom category.

categoryType
PerformanceCounterCategoryType

Одно из значений PerformanceCounterCategoryType, позволяющих определить тип категории: MultiInstance, SingleInstance или Unknown.One of the PerformanceCounterCategoryType values specifying whether the category is MultiInstance, SingleInstance, or Unknown.

counterName
String

Имя нового счетчика, создаваемого в новой категории.The name of a new counter to create as part of the new category.

counterHelp
String

Описание счетчика, связанного с новой пользовательской категорией.A description of the counter that is associated with the new custom category.

Возвращаемое значение

PerformanceCounterCategory

Категория PerformanceCounterCategory, связанная с новой системной категорией, или объект производительности.A PerformanceCounterCategory that is associated with the new system category, or performance object.

Исключения

Параметр counterName равен null или является пустой строкой ("").counterName is null or is an empty string ("").

-или--or- Счетчик, указанный параметром counterName, уже существует.The counter that is specified by counterName already exists.

-или--or- Синтаксис параметра counterName недопустим.counterName has invalid syntax. Возможно, значение параметра содержит обратную косую черту ("\") или его длина превышает 80 символов.It might contain backslash characters ("\") or have length greater than 80 characters.

Категория уже существует на локальном компьютере.The category already exists on the local computer.

categoryName имеет значение null.categoryName is null.

-или--or- counterHelp имеет значение null.counterHelp is null.

Сбой при вызове основного API системы.A call to an underlying system API failed.

Код, выполняющийся без привилегий администратора, предпринял попытку считывания значения счетчика производительности.Code that is executing without administrative privileges attempted to read a performance counter.

Примеры

В следующем примере кода показано использование Create метода.The following code example shows the use of the Create method. В примере показано, как создать настраиваемую категорию счетчика производительности с одним экземпляром.The example shows how to create a custom, single instance performance counter category.

Console.WriteLine("Creating Inventory custom counter");
if (!PerformanceCounterCategory.Exists("Inventory"))
    PerformanceCounterCategory.Create("Inventory",
        "Truck inventory",
        PerformanceCounterCategoryType.SingleInstance,
        "Trucks", "Number of trucks on hand");
Console.WriteLine("Creating Inventory custom counter")
If Not PerformanceCounterCategory.Exists("Inventory") Then
    PerformanceCounterCategory.Create("Inventory", "Truck inventory", PerformanceCounterCategoryType.SingleInstance, "Trucks", "Number of trucks on hand")
End If

Комментарии

categoryTypeПараметр указывает, является ли категория счетчика производительности одной или несколькими экземплярами.The categoryType parameter specifies whether the performance counter category is single-instance or multi-instance. По умолчанию категория является одиночным экземпляром, когда она создается и становится многоэкземплярной при добавлении другого экземпляра.By default, a category is single-instance when it is created and becomes multi-instance when another instance is added. Категории создаются при настройке приложения, а экземпляры добавляются во время выполнения.Categories are created when an application is set up, and instances are added at run time. В .NET Framework версиях 1,0 и 1,1 нет необходимости в том, чтобы категория счетчиков производительности была многоэкземплярной или единственной.In the .NET Framework versions 1.0 and 1.1, it is not necessary to know if a performance counter category is multi-instance or single-instance. В .NET Framework 2.0.NET Framework 2.0 PerformanceCounterCategoryType перечисление используется для указания того, может ли счетчик производительности иметь несколько экземпляров.In the .NET Framework 2.0.NET Framework 2.0, the PerformanceCounterCategoryType enumeration is used to indicate whether a performance counter can have multiple instances.

Категории счетчиков производительности, установленные с использованием .NET Framework 2.0.NET Framework 2.0 отдельной общей памяти, каждая из категорий счетчиков производительности имеет собственную память.Performance counter categories installed with the .NET Framework 2.0.NET Framework 2.0 use separate shared memory, with each performance counter category having its own memory. Можно указать размер отдельной общей памяти, создав DWORD с именем Филемаппингсизе в разделе реестра HKEY_LOCAL_MACHINE \Систем\куррентконтролсет\сервицес \ <category name> \перформанце.You can specify the size of separate shared memory by creating a DWORD named FileMappingSize in the registry key HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<category name> \Performance. Значение Филемаппингсизе устанавливается равным общему объему памяти для категории.The FileMappingSize value is set to the shared memory size of the category. Размер по умолчанию — 131072 десятичный.The default size is 131072 decimal. Если значение Филемаппингсизе отсутствует, fileMappingSize используется значение атрибута для performanceCounters элемента, указанного в файле Machine.config, что приводит к дополнительным издержкам на обработку файла конфигурации.If the FileMappingSize value is not present, the fileMappingSize attribute value for the performanceCounters element specified in the Machine.config file is used, causing additional overhead for configuration file processing. Можно повысить производительность при запуске приложения, задав размер сопоставления файлов в реестре.You can realize a performance improvement for application startup by setting the file mapping size in the registry.

Примечание

Настоятельно рекомендуется создавать новые категории счетчиков производительности во время установки приложения, а не во время выполнения приложения.It is strongly recommended that new performance counter categories be created during the installation of the application, not during the execution of the application. Это позволяет операционной системе обновлять список зарегистрированных категорий счетчиков производительности.This allows time for the operating system to refresh its list of registered performance counter categories. Если список не обновлялся, попытка использовать категорию завершится ошибкой.If the list has not been refreshed, the attempt to use the category will fail.

Примечание

Для чтения счетчиков производительности из сеанса неинтерактивного входа в систему Windows Vista и более поздних версий, Windows XP Professional x64 Edition или Windows Server 2003 необходимо быть членом группы пользователей системного монитора или обладать правами администратора.To read performance counters from a non-interactive logon session in Windows Vista and later, Windows XP Professional x64 Edition, or Windows Server 2003, you must either be a member of the Performance Monitor Users group or have administrative privileges.

Чтобы не допустить повышения привилегий для доступа к счетчикам производительности в Windows Vista и более поздних версиях, добавьте себя в группу "Пользователи системного монитора".To avoid having to elevate your privileges to access performance counters in Windows Vista and later, add yourself to the Performance Monitor Users group.

В Windows Vista и более поздних версиях права доступа пользователя определяются контролем учетных записей.In Windows Vista and later, User Account Control (UAC) determines the privileges of a user. Члену встроенной группы "Администраторы" присваивается два маркера доступа на время выполнения: маркер доступа обычного пользователя и маркер доступа администратора.If you are a member of the Built-in Administrators group, you are assigned two run-time access tokens: a standard user access token and an administrator access token. По умолчанию назначена роль обычного пользователя.By default, you are in the standard user role. Чтобы выполнить код, обращающийся к счетчикам производительности, необходимо сначала повысить привилегии обычного пользователя до администратора.To execute the code that accesses performance counters, you must first elevate your privileges from standard user to administrator. Это можно сделать при запуске приложения, , щелкнув значок приложения правой кнопкой мыши и указав, что приложение должно запускаться от имени администратора.You can do this when you start an application by right-clicking the application icon and indicating that you want to run as an administrator.

См. также раздел

Применяется к

Create(String, String, CounterCreationDataCollection)

Внимание!

This method has been deprecated. Please use System.Diagnostics.PerformanceCounterCategory.Create(string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, CounterCreationDataCollection counterData) instead. http://go.microsoft.com/fwlink/?linkid=14202

Внимание!

This method has been deprecated. Please use System.Diagnostics.PerformanceCounterCategory.Create(string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, CounterCreationDataCollection counterData) instead. https://go.microsoft.com/fwlink/?linkid=14202

Внимание!

Use another overload that uses PerformanceCounterCategoryType instead

Регистрирует пользовательскую категорию счетчиков производительности, содержащую указанные счетчики на локальном компьютере.Registers the custom performance counter category containing the specified counters on the local computer.

public:
 static System::Diagnostics::PerformanceCounterCategory ^ Create(System::String ^ categoryName, System::String ^ categoryHelp, System::Diagnostics::CounterCreationDataCollection ^ counterData);
[System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.PerformanceCounterCategory.Create(string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, CounterCreationDataCollection counterData) instead.  http://go.microsoft.com/fwlink/?linkid=14202")]
public static System.Diagnostics.PerformanceCounterCategory Create (string categoryName, string categoryHelp, System.Diagnostics.CounterCreationDataCollection counterData);
[System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.PerformanceCounterCategory.Create(string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, CounterCreationDataCollection counterData) instead.  https://go.microsoft.com/fwlink/?linkid=14202")]
public static System.Diagnostics.PerformanceCounterCategory Create (string categoryName, string categoryHelp, System.Diagnostics.CounterCreationDataCollection counterData);
public static System.Diagnostics.PerformanceCounterCategory Create (string categoryName, string categoryHelp, System.Diagnostics.CounterCreationDataCollection counterData);
[System.Obsolete("Use another overload that uses PerformanceCounterCategoryType instead")]
public static System.Diagnostics.PerformanceCounterCategory Create (string categoryName, string categoryHelp, System.Diagnostics.CounterCreationDataCollection counterData);
[<System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.PerformanceCounterCategory.Create(string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, CounterCreationDataCollection counterData) instead.  http://go.microsoft.com/fwlink/?linkid=14202")>]
static member Create : string * string * System.Diagnostics.CounterCreationDataCollection -> System.Diagnostics.PerformanceCounterCategory
[<System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.PerformanceCounterCategory.Create(string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, CounterCreationDataCollection counterData) instead.  https://go.microsoft.com/fwlink/?linkid=14202")>]
static member Create : string * string * System.Diagnostics.CounterCreationDataCollection -> System.Diagnostics.PerformanceCounterCategory
static member Create : string * string * System.Diagnostics.CounterCreationDataCollection -> System.Diagnostics.PerformanceCounterCategory
[<System.Obsolete("Use another overload that uses PerformanceCounterCategoryType instead")>]
static member Create : string * string * System.Diagnostics.CounterCreationDataCollection -> System.Diagnostics.PerformanceCounterCategory
Public Shared Function Create (categoryName As String, categoryHelp As String, counterData As CounterCreationDataCollection) As PerformanceCounterCategory

Параметры

categoryName
String

Имя пользовательской категории счетчиков производительности, которую нужно создать и зарегистрировать в системе.The name of the custom performance counter category to create and register with the system.

categoryHelp
String

Описание пользовательской категории.A description of the custom category.

counterData
CounterCreationDataCollection

Коллекция CounterCreationDataCollection, в которой определяются счетчики, создаваемые в новой категории.A CounterCreationDataCollection that specifies the counters to create as part of the new category.

Возвращаемое значение

PerformanceCounterCategory

Категория PerformanceCounterCategory, связанная с новой пользовательской категорией, или объект производительности.A PerformanceCounterCategory that is associated with the new custom category, or performance object.

Атрибуты

Исключения

Имя счетчика, указанное в коллекции counterData, — null или пустая строка ("").A counter name that is specified within the counterData collection is null or an empty string ("").

-или--or- Счетчик, указанный в коллекции counterData, уже существует.A counter that is specified within the counterData collection already exists.

-или--or- Синтаксис параметра counterName недопустим.The counterName parameter has invalid syntax. Возможно, значение параметра содержит обратную косую черту ("\") или его длина превышает 80 символов.It might contain backslash characters ("\") or have length greater than 80 characters.

Параметр categoryName имеет значение null.The categoryName parameter is null.

Категория уже существует на локальном компьютере.The category already exists on the local computer.

-или--or- Структура коллекции counterData является неверной для базовых счетчиков.The layout of the counterData collection is incorrect for base counters. Счетчики типа AverageCount64, AverageTimer32, CounterMultiTimer, CounterMultiTimerInverse, CounterMultiTimer100Ns, CounterMultiTimer100NsInverse, RawFraction, SampleFraction или SampleCounter должны непосредственно предшествовать одному из типов базовых счетчиков (AverageBase, MultiBase, RawBase или SampleBase).A counter of type AverageCount64, AverageTimer32, CounterMultiTimer, CounterMultiTimerInverse, CounterMultiTimer100Ns, CounterMultiTimer100NsInverse, RawFraction, SampleFraction or SampleCounter has to be immediately followed by one of the base counter types (AverageBase, MultiBase, RawBase, or SampleBase).

Сбой при вызове основного API системы.A call to an underlying system API failed.

Код, выполняющийся без привилегий администратора, предпринял попытку считывания значения счетчика производительности.Code that is executing without administrative privileges attempted to read a performance counter.

Примеры

В следующем примере кода определяется, PerformanceCounterCategory существует ли объект с именем Orders.The following code example determines whether a PerformanceCounterCategory object named "orders" exists. В противном случае он создает PerformanceCounterCategory объект с помощью CounterCreationDataCollection объекта, который содержит два счетчика производительности.If not, it creates the PerformanceCounterCategory object by using a CounterCreationDataCollection object that contains two performance counters.

if (  !PerformanceCounterCategory::Exists( "Orders" ) )
{
   CounterCreationData^ milk = gcnew CounterCreationData;
   milk->CounterName = "milk";
   milk->CounterType = PerformanceCounterType::NumberOfItems32;

   CounterCreationData^ milkPerSecond = gcnew CounterCreationData;
   milkPerSecond->CounterName = "milk orders/second";
   milkPerSecond->CounterType = PerformanceCounterType::RateOfCountsPerSecond32;

   CounterCreationDataCollection^ ccds = gcnew CounterCreationDataCollection;
   ccds->Add( milkPerSecond );
   ccds->Add( milk );
   PerformanceCounterCategory::Create( "Orders", "Number of processed orders", ccds );
}
if (!PerformanceCounterCategory.Exists("Orders"))
{
    CounterCreationData milk = new CounterCreationData();
    milk.CounterName = "milk";
    milk.CounterType = PerformanceCounterType.NumberOfItems32;

    CounterCreationData milkPerSecond = new CounterCreationData();
    milkPerSecond.CounterName = "milk orders/second";
    milkPerSecond.CounterType = PerformanceCounterType.RateOfCountsPerSecond32;

    CounterCreationDataCollection ccds = new CounterCreationDataCollection();
    ccds.Add(milkPerSecond);
    ccds.Add(milk);

    PerformanceCounterCategory.Create("Orders", "Number of processed orders",
        PerformanceCounterCategoryType.SingleInstance, ccds);
}
If Not PerformanceCounterCategory.Exists("Orders") Then        
    Dim milk As New CounterCreationData()
    milk.CounterName = "milk"
    milk.CounterType = PerformanceCounterType.NumberOfItems32
    
    Dim milkPerSecond As New CounterCreationData()
    milkPerSecond.CounterName = "milk orders/second"
    milkPerSecond.CounterType = PerformanceCounterType.RateOfCountsPerSecond32
    
    Dim ccds As New CounterCreationDataCollection()
    ccds.Add(milkPerSecond)
    ccds.Add(milk)
    
    PerformanceCounterCategory.Create("Orders", "Number of processed orders", _
           PerformanceCounterCategoryType.SingleInstance, ccds)
End If

Комментарии

Примечание

Для чтения счетчиков производительности из сеанса неинтерактивного входа в систему Windows Vista и более поздних версий, Windows XP Professional x64 Edition или Windows Server 2003 необходимо быть членом группы пользователей системного монитора или обладать правами администратора.To read performance counters from a non-interactive logon session in Windows Vista and later, Windows XP Professional x64 Edition, or Windows Server 2003, you must either be a member of the Performance Monitor Users group or have administrative privileges.

Чтобы не допустить повышения привилегий для доступа к счетчикам производительности в Windows Vista и более поздних версиях, добавьте себя в группу "Пользователи системного монитора".To avoid having to elevate your privileges to access performance counters in Windows Vista and later, add yourself to the Performance Monitor Users group.

В Windows Vista и более поздних версиях права доступа пользователя определяются контролем учетных записей.In Windows Vista and later, User Account Control (UAC) determines the privileges of a user. Члену встроенной группы "Администраторы" присваивается два маркера доступа на время выполнения: маркер доступа обычного пользователя и маркер доступа администратора.If you are a member of the Built-in Administrators group, you are assigned two run-time access tokens: a standard user access token and an administrator access token. По умолчанию назначена роль обычного пользователя.By default, you are in the standard user role. Чтобы выполнить код, обращающийся к счетчикам производительности, необходимо сначала повысить привилегии обычного пользователя до администратора.To execute the code that accesses performance counters, you must first elevate your privileges from standard user to administrator. Это можно сделать при запуске приложения, , щелкнув значок приложения правой кнопкой мыши и указав, что приложение должно запускаться от имени администратора.You can do this when you start an application by right-clicking the application icon and indicating that you want to run as an administrator.

См. также раздел

Применяется к

Create(String, String, PerformanceCounterCategoryType, CounterCreationDataCollection)

Регистрирует пользовательскую категорию счетчиков производительности, содержащую указанные счетчики на локальном компьютере.Registers the custom performance counter category containing the specified counters on the local computer.

public:
 static System::Diagnostics::PerformanceCounterCategory ^ Create(System::String ^ categoryName, System::String ^ categoryHelp, System::Diagnostics::PerformanceCounterCategoryType categoryType, System::Diagnostics::CounterCreationDataCollection ^ counterData);
public static System.Diagnostics.PerformanceCounterCategory Create (string categoryName, string categoryHelp, System.Diagnostics.PerformanceCounterCategoryType categoryType, System.Diagnostics.CounterCreationDataCollection counterData);
static member Create : string * string * System.Diagnostics.PerformanceCounterCategoryType * System.Diagnostics.CounterCreationDataCollection -> System.Diagnostics.PerformanceCounterCategory
Public Shared Function Create (categoryName As String, categoryHelp As String, categoryType As PerformanceCounterCategoryType, counterData As CounterCreationDataCollection) As PerformanceCounterCategory

Параметры

categoryName
String

Имя пользовательской категории счетчиков производительности, которую нужно создать и зарегистрировать в системе.The name of the custom performance counter category to create and register with the system.

categoryHelp
String

Описание пользовательской категории.A description of the custom category.

categoryType
PerformanceCounterCategoryType

Одно из значений перечисления PerformanceCounterCategoryType.One of the PerformanceCounterCategoryType values.

counterData
CounterCreationDataCollection

Коллекция CounterCreationDataCollection, в которой определяются счетчики, создаваемые в новой категории.A CounterCreationDataCollection that specifies the counters to create as part of the new category.

Возвращаемое значение

PerformanceCounterCategory

Категория PerformanceCounterCategory, связанная с новой пользовательской категорией, или объект производительности.A PerformanceCounterCategory that is associated with the new custom category, or performance object.

Исключения

Имя счетчика, указанное в коллекции counterData, — null или пустая строка ("").A counter name that is specified within the counterData collection is null or an empty string ("").

-или--or- Счетчик, указанный в коллекции counterData, уже существует.A counter that is specified within the counterData collection already exists.

-или--or- Синтаксис параметра counterName недопустим.counterName has invalid syntax. Возможно, значение параметра содержит обратную косую черту ("\") или его длина превышает 80 символов.It might contain backslash characters ("\") or have length greater than 80 characters.

categoryName имеет значение null.categoryName is null.

-или--or- counterData имеет значение null.counterData is null.

Значение параметра categoryType выходит за рамки диапазона следующих значений: MultiInstance, SingleInstanceUnknown.categoryType value is outside of the range of the following values: MultiInstance, SingleInstance, or Unknown.

Категория уже существует на локальном компьютере.The category already exists on the local computer.

-или--or- Структура коллекции counterData является неверной для базовых счетчиков.The layout of the counterData collection is incorrect for base counters. Счетчики типа AverageCount64, AverageTimer32, CounterMultiTimer, CounterMultiTimerInverse, CounterMultiTimer100Ns, CounterMultiTimer100NsInverse, RawFraction, SampleFraction или SampleCounter должны непосредственно предшествовать одному из типов базовых счетчиков (AverageBase, MultiBase, RawBase или SampleBase).A counter of type AverageCount64, AverageTimer32, CounterMultiTimer, CounterMultiTimerInverse, CounterMultiTimer100Ns, CounterMultiTimer100NsInverse, RawFraction, SampleFraction, or SampleCounter must be immediately followed by one of the base counter types (AverageBase, MultiBase, RawBase, or SampleBase).

Сбой при вызове основного API системы.A call to an underlying system API failed.

Код, выполняющийся без привилегий администратора, предпринял попытку считывания значения счетчика производительности.Code that is executing without administrative privileges attempted to read a performance counter.

Примеры

В следующем примере кода показано использование Create метода.The following code example shows the use of the Create method. В примере показано, как создать настраиваемую категорию счетчика производительности с несколькими экземплярами для количества заказов в секунду.The example shows how to create a custom, multi-instance performance counter category for the number of orders per second.

CounterCreationData data1 = new CounterCreationData("Trucks",
    "Number of orders", PerformanceCounterType.NumberOfItems32);
CounterCreationData data2 = new CounterCreationData("Rate of sales",
    "Orders/second", PerformanceCounterType.RateOfCountsPerSecond32);
CounterCreationDataCollection ccds = new CounterCreationDataCollection();
ccds.Add(data1);
ccds.Add(data2);
Console.WriteLine("Creating Orders custom counter.");
if (!PerformanceCounterCategory.Exists("Orders"))
    PerformanceCounterCategory.Create("Orders",
        "Processed orders",
        PerformanceCounterCategoryType.MultiInstance,
        ccds);
Dim data1 As New CounterCreationData("Trucks", "Number of orders", PerformanceCounterType.NumberOfItems32)
Dim data2 As New CounterCreationData("Rate of sales", "Orders/second", PerformanceCounterType.RateOfCountsPerSecond32)
Dim ccds As New CounterCreationDataCollection()
ccds.Add(data1)
ccds.Add(data2)
Console.WriteLine("Creating Orders custom counter.")
If Not PerformanceCounterCategory.Exists("Orders") Then
    PerformanceCounterCategory.Create("Orders", "Processed orders", PerformanceCounterCategoryType.MultiInstance, ccds)
End If

Комментарии

categoryTypeПараметр указывает, является ли категория счетчика производительности одной или несколькими экземплярами.The categoryType parameter specifies whether the performance counter category is single-instance or multi-instance. По умолчанию категория является одиночным экземпляром, когда она создается и становится многоэкземплярной при добавлении другого экземпляра.By default, a category is single-instance when it is created and becomes multi-instance when another instance is added. Категории создаются при настройке приложения, а экземпляры добавляются во время выполнения.Categories are created when an application is set up, and instances are added at run time. В .NET Framework версиях 1,0 и 1,1 нет необходимости в том, чтобы категория счетчиков производительности была многоэкземплярной или единственной.In the .NET Framework versions 1.0 and 1.1, it is not necessary to know if a performance counter category is multi-instance or single-instance. В .NET Framework 2.0.NET Framework 2.0 PerformanceCounterCategoryType перечисление используется для указания того, может ли счетчик производительности иметь несколько экземпляров.In the .NET Framework 2.0.NET Framework 2.0, the PerformanceCounterCategoryType enumeration is used to indicate whether a performance counter can have multiple instances.

Категории счетчиков производительности, установленные с использованием .NET Framework 2.0.NET Framework 2.0 отдельной общей памяти, каждая из категорий счетчиков производительности имеет собственную память.Performance counter categories installed with the .NET Framework 2.0.NET Framework 2.0 use separate shared memory, with each performance counter category having its own memory. Можно указать размер отдельной общей памяти, создав DWORD с именем Филемаппингсизе в разделе реестра HKEY_LOCAL_MACHINE \Систем\куррентконтролсет\сервицес \ <category name> \перформанце.You can specify the size of separate shared memory by creating a DWORD named FileMappingSize in the registry key HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<category name> \Performance. Значение Филемаппингсизе устанавливается равным общему объему памяти для категории.The FileMappingSize value is set to the shared memory size of the category. Размер по умолчанию — 131072 десятичный.The default size is 131072 decimal. Если значение Филемаппингсизе отсутствует, fileMappingSize используется значение атрибута для performanceCounters элемента, указанного в файле Machine.config, что приводит к дополнительным издержкам на обработку файла конфигурации.If the FileMappingSize value is not present, the fileMappingSize attribute value for the performanceCounters element specified in the Machine.config file is used, causing additional overhead for configuration file processing. Можно повысить производительность при запуске приложения, задав размер сопоставления файлов в реестре.You can realize a performance improvement for application startup by setting the file mapping size in the registry.

Примечание

Настоятельно рекомендуется создавать новые категории счетчиков производительности во время установки приложения, а не во время выполнения приложения.It is strongly recommended that new performance counter categories be created during the installation of the application, not during the execution of the application. Это позволяет операционной системе обновлять список зарегистрированных категорий счетчиков производительности.This allows time for the operating system to refresh its list of registered performance counter categories. Если список не обновлялся, попытка использовать категорию завершится ошибкой.If the list has not been refreshed, the attempt to use the category will fail.

Примечание

Для чтения счетчиков производительности из сеанса неинтерактивного входа в систему Windows Vista и более поздних версий, Windows XP Professional x64 Edition или Windows Server 2003 необходимо быть членом группы пользователей системного монитора или обладать правами администратора.To read performance counters from a non-interactive logon session in Windows Vista and later, Windows XP Professional x64 Edition, or Windows Server 2003, you must either be a member of the Performance Monitor Users group or have administrative privileges.

Чтобы не допустить повышения привилегий для доступа к счетчикам производительности в Windows Vista и более поздних версиях, добавьте себя в группу "Пользователи системного монитора".To avoid having to elevate your privileges to access performance counters in Windows Vista and later, add yourself to the Performance Monitor Users group.

В Windows Vista и более поздних версиях права доступа пользователя определяются контролем учетных записей.In Windows Vista and later, User Account Control (UAC) determines the privileges of a user. Члену встроенной группы "Администраторы" присваивается два маркера доступа на время выполнения: маркер доступа обычного пользователя и маркер доступа администратора.If you are a member of the Built-in Administrators group, you are assigned two run-time access tokens: a standard user access token and an administrator access token. По умолчанию назначена роль обычного пользователя.By default, you are in the standard user role. Чтобы выполнить код, обращающийся к счетчикам производительности, необходимо сначала повысить привилегии обычного пользователя до администратора.To execute the code that accesses performance counters, you must first elevate your privileges from standard user to administrator. Это можно сделать при запуске приложения, , щелкнув значок приложения правой кнопкой мыши и указав, что приложение должно запускаться от имени администратора.You can do this when you start an application by right-clicking the application icon and indicating that you want to run as an administrator.

См. также раздел

Применяется к