Поделиться через


PerformanceCounterCategory.Create Метод

Определение

Регистрирует в системе пользовательскую категорию счетчиков производительности и один или несколько счетчиков.

Перегрузки

Create(String, String, String, String)
Устаревшие..
Устаревшие..
Устаревшие..

Регистрирует пользовательскую категорию счетчиков производительности, содержащую на локальном компьютере один счетчик типа NumberOfItems32.

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

Регистрирует пользовательскую категорию счетчиков производительности, содержащую на локальном компьютере один счетчик типа NumberOfItems32.

Create(String, String, CounterCreationDataCollection)
Устаревшие..
Устаревшие..
Устаревшие..

Регистрирует пользовательскую категорию счетчиков производительности, содержащую указанные счетчики на локальном компьютере.

Create(String, String, PerformanceCounterCategoryType, CounterCreationDataCollection)

Регистрирует пользовательскую категорию счетчиков производительности, содержащую указанные счетчики на локальном компьютере.

Create(String, String, String, String)

Исходный код:
PerformanceCounterCategory.cs
Исходный код:
PerformanceCounterCategory.cs
Исходный код:
PerformanceCounterCategory.cs

Внимание!

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

Внимание!

This overload of PerformanceCounterCategory.Create has been deprecated. Use System.Diagnostics.PerformanceCounterCategory.Create(string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, string counterName, string counterHelp) instead.

Регистрирует пользовательскую категорию счетчиков производительности, содержащую на локальном компьютере один счетчик типа NumberOfItems32.

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);
[System.Obsolete("This overload of PerformanceCounterCategory.Create has been deprecated. Use System.Diagnostics.PerformanceCounterCategory.Create(string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, string counterName, string counterHelp) instead.")]
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("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
[<System.Obsolete("This overload of PerformanceCounterCategory.Create has been deprecated. Use System.Diagnostics.PerformanceCounterCategory.Create(string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, string counterName, string counterHelp) instead.")>]
static member Create : string * string * string * string -> System.Diagnostics.PerformanceCounterCategory
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

Имя пользовательской категории счетчиков производительности, которую нужно создать и зарегистрировать в системе.

categoryHelp
String

Описание пользовательской категории.

counterName
String

Имя нового счетчика типа NumberOfItems32, создаваемого в новой категории.

counterHelp
String

Описание счетчика, связанного с новой пользовательской категорией.

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

Категория PerformanceCounterCategory, связанная с новой системной категорией, или объект производительности.

Атрибуты

Исключения

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

-или-

Счетчик, указанный параметром counterName, уже существует.

-или-

Синтаксис параметра counterName недопустим. Он может содержать символы обратной косой черты ("\") или иметь длину более 80 символов.

Категория уже существует на локальном компьютере.

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

-или-

counterHelp имеет значение null.

Сбой при вызове основного API системы.

Код, выполняющийся без привилегий администратора, предпринял попытку считывания значения счетчика производительности.

Примеры

В следующем примере кода создается и один с PerformanceCounter текстом PerformanceCounterCategory справки Create(String, String, String, String) для каждого из них с помощью метода .

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 необходимо быть членом группы Монитор производительности Пользователи или иметь права администратора.

Чтобы избежать повышения привилегий для доступа к счетчикам производительности в Windows Vista и более поздних версиях, добавьте себя в группу Монитор производительности пользователи.

В Windows Vista и более поздних версиях права доступа пользователя определяются контролем учетных записей. Члену встроенной группы "Администраторы" присваивается два маркера доступа на время выполнения: маркер доступа обычного пользователя и маркер доступа администратора. По умолчанию назначена роль обычного пользователя. Чтобы выполнить код, который обращается к счетчикам производительности, необходимо сначала повысить привилегии от обычного пользователя до администратора. Это можно сделать при запуске приложения, , щелкнув значок приложения правой кнопкой мыши и указав, что приложение должно запускаться от имени администратора.

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

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

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

Исходный код:
PerformanceCounterCategory.cs
Исходный код:
PerformanceCounterCategory.cs
Исходный код:
PerformanceCounterCategory.cs

Регистрирует пользовательскую категорию счетчиков производительности, содержащую на локальном компьютере один счетчик типа NumberOfItems32.

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

Имя пользовательской категории счетчиков производительности, которую нужно создать и зарегистрировать в системе.

categoryHelp
String

Описание пользовательской категории.

categoryType
PerformanceCounterCategoryType

Одно из значений PerformanceCounterCategoryType, позволяющих определить тип категории: MultiInstance, SingleInstance или Unknown.

counterName
String

Имя нового счетчика, создаваемого в новой категории.

counterHelp
String

Описание счетчика, связанного с новой пользовательской категорией.

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

Категория PerformanceCounterCategory, связанная с новой системной категорией, или объект производительности.

Исключения

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

-или-

Счетчик, указанный параметром counterName, уже существует.

-или-

Синтаксис параметра counterName недопустим. Он может содержать символы обратной косой черты ("\") или иметь длину более 80 символов.

Категория уже существует на локальном компьютере.

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

-или-

counterHelp имеет значение null.

Сбой при вызове основного API системы.

Код, выполняющийся без привилегий администратора, предпринял попытку считывания значения счетчика производительности.

Примеры

В следующем примере кода показано использование Create метода . В примере показано, как создать пользовательскую категорию счетчика производительности с одним экземпляром.

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 указывает, относится ли счетчик производительности к категории с одним или несколькими экземплярами. По умолчанию категория является одним экземпляром при ее создании и становится несколькими экземплярами при добавлении другого экземпляра. Категории создаются при настройке приложения, а экземпляры добавляются во время выполнения. В платформа .NET Framework версиях 1.0 и 1.1 не требуется знать, относится ли счетчик производительности к категории с несколькими экземплярами или с одним экземпляром. В платформа .NET Framework 2.0 перечисление используется для указания того, PerformanceCounterCategoryType может ли счетчик производительности иметь несколько экземпляров.

Категории счетчиков производительности, установленные вместе с платформа .NET Framework 2.0, используют отдельную общую память, при этом каждая категория счетчиков производительности имеет собственную память. Вы можете указать размер отдельной общей памяти, создав DWORD с именем FileMappingSize в разделе реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<имя> категории\Производительность. Для параметра FileMappingSize задается размер общей памяти категории. Размер по умолчанию — 131072 десятичное число. Если значение FileMappingSize отсутствует, fileMappingSize используется значение атрибута для performanceCounters элемента, указанного в файле Machine.config, что приводит к дополнительным издержкам при обработке файла конфигурации. Вы можете повысить производительность при запуске приложения, задав размер сопоставления файлов в реестре.

Примечание

Настоятельно рекомендуется создавать новые категории счетчиков производительности во время установки приложения, а не во время его выполнения. Это позволяет операционной системе обновить список зарегистрированных категорий счетчиков производительности. Если список не был обновлен, попытка использовать категорию завершится ошибкой.

Примечание

Для чтения счетчиков производительности из неинтерактивного сеанса входа в Windows Vista и более поздних версий, Windows XP Professional x64 Edition или Windows Server 2003 необходимо быть членом группы Монитор производительности Пользователи или иметь права администратора.

Чтобы избежать повышения привилегий для доступа к счетчикам производительности в Windows Vista и более поздних версиях, добавьте себя в группу Монитор производительности пользователи.

В Windows Vista и более поздних версиях права доступа пользователя определяются контролем учетных записей. Члену встроенной группы "Администраторы" присваивается два маркера доступа на время выполнения: маркер доступа обычного пользователя и маркер доступа администратора. По умолчанию назначена роль обычного пользователя. Чтобы выполнить код, который обращается к счетчикам производительности, необходимо сначала повысить привилегии от обычного пользователя до администратора. Это можно сделать при запуске приложения, , щелкнув значок приложения правой кнопкой мыши и указав, что приложение должно запускаться от имени администратора.

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

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

Create(String, String, CounterCreationDataCollection)

Исходный код:
PerformanceCounterCategory.cs
Исходный код:
PerformanceCounterCategory.cs
Исходный код:
PerformanceCounterCategory.cs

Внимание!

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

Внимание!

This overload of PerformanceCounterCategory.Create has been deprecated. Use System.Diagnostics.PerformanceCounterCategory.Create(string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, CounterCreationDataCollection counterData) instead.

Регистрирует пользовательскую категорию счетчиков производительности, содержащую указанные счетчики на локальном компьютере.

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);
[System.Obsolete("This overload of PerformanceCounterCategory.Create has been deprecated. Use System.Diagnostics.PerformanceCounterCategory.Create(string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, CounterCreationDataCollection counterData) instead.")]
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("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
[<System.Obsolete("This overload of PerformanceCounterCategory.Create has been deprecated. Use System.Diagnostics.PerformanceCounterCategory.Create(string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, CounterCreationDataCollection counterData) instead.")>]
static member Create : string * string * System.Diagnostics.CounterCreationDataCollection -> System.Diagnostics.PerformanceCounterCategory
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

Имя пользовательской категории счетчиков производительности, которую нужно создать и зарегистрировать в системе.

categoryHelp
String

Описание пользовательской категории.

counterData
CounterCreationDataCollection

Коллекция CounterCreationDataCollection, в которой определяются счетчики, создаваемые в новой категории.

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

Категория PerformanceCounterCategory, связанная с новой пользовательской категорией, или объект производительности.

Атрибуты

Исключения

Имя счетчика, указанное в коллекции counterData, — null или пустая строка ("").

-или-

Счетчик, указанный в коллекции counterData, уже существует.

-или-

Синтаксис параметра counterName недопустим. Он может содержать символы обратной косой черты ("\") или иметь длину более 80 символов.

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

Категория уже существует на локальном компьютере.

-или-

Структура коллекции counterData является неверной для базовых счетчиков. Счетчики типа AverageCount64, AverageTimer32, CounterMultiTimer, CounterMultiTimerInverse, CounterMultiTimer100Ns, CounterMultiTimer100NsInverse, RawFraction, SampleFraction или SampleCounter должны непосредственно предшествовать одному из типов базовых счетчиков (AverageBase, MultiBase, RawBase или SampleBase).

Сбой при вызове основного API системы.

Код, выполняющийся без привилегий администратора, предпринял попытку считывания значения счетчика производительности.

Примеры

В следующем примере кода определяется, PerformanceCounterCategory существует ли объект с именем orders. В противном случае объект создается PerformanceCounterCategory с помощью объекта , CounterCreationDataCollection содержащего два счетчика производительности.

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 необходимо быть членом группы Монитор производительности Пользователи или иметь права администратора.

Чтобы избежать повышения привилегий для доступа к счетчикам производительности в Windows Vista и более поздних версиях, добавьте себя в группу Монитор производительности Пользователи.

В Windows Vista и более поздних версиях права доступа пользователя определяются контролем учетных записей. Члену встроенной группы "Администраторы" присваивается два маркера доступа на время выполнения: маркер доступа обычного пользователя и маркер доступа администратора. По умолчанию назначена роль обычного пользователя. Чтобы выполнить код, который обращается к счетчикам производительности, необходимо сначала повысить привилегии обычного пользователя до администратора. Это можно сделать при запуске приложения, , щелкнув значок приложения правой кнопкой мыши и указав, что приложение должно запускаться от имени администратора.

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

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

Create(String, String, PerformanceCounterCategoryType, CounterCreationDataCollection)

Исходный код:
PerformanceCounterCategory.cs
Исходный код:
PerformanceCounterCategory.cs
Исходный код:
PerformanceCounterCategory.cs

Регистрирует пользовательскую категорию счетчиков производительности, содержащую указанные счетчики на локальном компьютере.

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

Имя пользовательской категории счетчиков производительности, которую нужно создать и зарегистрировать в системе.

categoryHelp
String

Описание пользовательской категории.

categoryType
PerformanceCounterCategoryType

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

counterData
CounterCreationDataCollection

Коллекция CounterCreationDataCollection, в которой определяются счетчики, создаваемые в новой категории.

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

Категория PerformanceCounterCategory, связанная с новой пользовательской категорией, или объект производительности.

Исключения

Имя счетчика, указанное в коллекции counterData, — null или пустая строка ("").

-или-

Счетчик, указанный в коллекции counterData, уже существует.

-или-

Синтаксис параметра counterName недопустим. Он может содержать символы обратной косой черты ("\") или иметь длину более 80 символов.

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

-или-

counterData имеет значение null.

Значение параметра categoryType выходит за рамки диапазона следующих значений: MultiInstance, SingleInstanceUnknown.

Категория уже существует на локальном компьютере.

-или-

Структура коллекции counterData является неверной для базовых счетчиков. Счетчики типа AverageCount64, AverageTimer32, CounterMultiTimer, CounterMultiTimerInverse, CounterMultiTimer100Ns, CounterMultiTimer100NsInverse, RawFraction, SampleFraction или SampleCounter должны непосредственно предшествовать одному из типов базовых счетчиков (AverageBase, MultiBase, RawBase или SampleBase).

Сбой при вызове основного API системы.

Код, выполняющийся без привилегий администратора, предпринял попытку считывания значения счетчика производительности.

Примеры

В следующем примере кода показано использование Create метода . В примере показано, как создать пользовательскую категорию счетчиков производительности с несколькими экземплярами для количества заказов в секунду.

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 указывает, является ли категория счетчика производительности одним или несколькими экземплярами. По умолчанию категория является одним экземпляром при создании и становится многоэкземлярной при добавлении другого экземпляра. Категории создаются при настройке приложения, а экземпляры добавляются во время выполнения. В платформа .NET Framework версиях 1.0 и 1.1 не нужно знать, является ли категория счетчика производительности многоэкземлярной или одноэкземлярной. В платформа .NET Framework 2.0 перечисление PerformanceCounterCategoryType используется для указания того, может ли счетчик производительности иметь несколько экземпляров.

Категории счетчиков производительности, установленные с платформа .NET Framework 2.0, используют отдельную общую память, при этом каждая категория счетчика производительности имеет собственную память. Вы можете указать размер отдельной общей памяти, создав DWORD с именем FileMappingSize в разделе реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<имя> категории\Производительность. Для параметра FileMappingSize задан размер общей памяти категории. Размер по умолчанию — 131072 десятичное число. Если значение FileMappingSize отсутствует, fileMappingSize используется значение атрибута для performanceCounters элемента, указанного в файле Machine.config, что приводит к дополнительным издержкам для обработки файла конфигурации. Вы можете повысить производительность при запуске приложения, задав размер сопоставления файлов в реестре.

Примечание

Настоятельно рекомендуется создавать новые категории счетчиков производительности во время установки приложения, а не во время его выполнения. Это позволяет операционной системе обновить список зарегистрированных категорий счетчиков производительности. Если список не был обновлен, попытка использовать категорию завершится ошибкой.

Примечание

Для чтения счетчиков производительности из неинтерактивного сеанса входа в Windows Vista и более поздних версий, Windows XP Professional x64 Edition или Windows Server 2003 необходимо быть членом группы Монитор производительности Пользователи или иметь права администратора.

Чтобы избежать повышения привилегий для доступа к счетчикам производительности в Windows Vista и более поздних версиях, добавьте себя в группу Монитор производительности Пользователи.

В Windows Vista и более поздних версиях права доступа пользователя определяются контролем учетных записей. Члену встроенной группы "Администраторы" присваивается два маркера доступа на время выполнения: маркер доступа обычного пользователя и маркер доступа администратора. По умолчанию назначена роль обычного пользователя. Чтобы выполнить код, который обращается к счетчикам производительности, необходимо сначала повысить привилегии обычного пользователя до администратора. Это можно сделать при запуске приложения, , щелкнув значок приложения правой кнопкой мыши и указав, что приложение должно запускаться от имени администратора.

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

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