PerformanceCounterCategory.Create 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
向系统注册自定义性能计数器类别和一个或多个计数器。
重载
Create(String, String, String, String) |
已过时.
已过时.
已过时.
在本地计算机上注册包含 |
Create(String, String, PerformanceCounterCategoryType, String, String) |
在本地计算机上注册包含 NumberOfItems32 类型的单个计数器的自定义性能计数器类别。 |
Create(String, String, CounterCreationDataCollection) |
已过时.
已过时.
已过时.
在本地计算机上注册包含指定计数器的自定义性能计数器类别。 |
Create(String, String, PerformanceCounterCategoryType, CounterCreationDataCollection) |
在本地计算机上注册包含指定计数器的自定义性能计数器类别。 |
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
注意
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 个字符。
该类别已存在于本地计算机上。
对基础系统 API 的调用失败。
以不具有管理特权的用户身份正在执行的代码尝试读取性能计数器。
示例
下面的代码示例使用 Create(String, String, String, String) 方法创建 一个 和 一PerformanceCounter个PerformanceCounterCategory,其中包含每个的帮助文本。
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 或更高版本中,用户帐户控制 (UAC) 决定用户的特权。 如果您是内置的 Administrators 组的成员,将为您分配两个运行时访问令牌:一个标准用户访问令牌和一个管理员访问令牌。 默认情况下,您拥有标准用户角色。 若要执行访问性能计数器的代码,必须先将特权从标准用户提升为管理员。 你可以通过以下方式执行此操作:右键单击应用程序图标并指示需以管理员身份运行。
另请参阅
适用于
Create(String, String, PerformanceCounterCategoryType, String, String)
在本地计算机上注册包含 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 个字符。
该类别已存在于本地计算机上。
对基础系统 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 一起安装的性能计数器类别使用单独的共享内存,每个性能计数器类别都有自己的内存。 可以通过在注册表项中创建名为 FileMappingSize 的 DWORD 来指定单独的共享内存的大小,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<类别名称>\Performance。 FileMappingSize 值设置为类别的共享内存大小。 默认大小为十进制131072。 如果 FileMappingSize 值不存在,则 fileMappingSize
使用 Machine.config 文件中指定的元素的属性值 performanceCounters
,从而导致配置文件处理产生额外的开销。 通过在注册表中设置文件映射大小,可以实现应用程序启动的性能改进。
注意
强烈建议在安装应用程序期间创建新的性能计数器类别,而不是在执行应用程序期间。 这允许操作系统有时间刷新其已注册的性能计数器类别列表。 如果尚未刷新列表,则尝试使用类别将失败。
注意
若要从 Windows Vista 及更高版本、Windows XP Professional x64 Edition 或 Windows Server 2003 中的非交互式登录会话读取性能计数器,你必须是 性能监视器 用户组的成员或具有管理权限。
若要避免在 Windows Vista 及更高版本中提升访问性能计数器的权限,请将自己添加到性能监视器用户组。
在 Windows Vista 或更高版本中,用户帐户控制 (UAC) 决定用户的特权。 如果您是内置的 Administrators 组的成员,将为您分配两个运行时访问令牌:一个标准用户访问令牌和一个管理员访问令牌。 默认情况下,您拥有标准用户角色。 若要执行访问性能计数器的代码,必须先将特权从标准用户提升为管理员。 你可以通过以下方式执行此操作:右键单击应用程序图标并指示需以管理员身份运行。
另请参阅
适用于
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
注意
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”的对象。 否则,它将使用包含两个CounterCreationDataCollection性能计数器的 对象来创建 PerformanceCounterCategory 对象。
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 或更高版本中,用户帐户控制 (UAC) 决定用户的特权。 如果您是内置的 Administrators 组的成员,将为您分配两个运行时访问令牌:一个标准用户访问令牌和一个管理员访问令牌。 默认情况下,您拥有标准用户角色。 若要执行访问性能计数器的代码,必须先将特权从标准用户提升为管理员。 你可以通过以下方式执行此操作:右键单击应用程序图标并指示需以管理员身份运行。
另请参阅
适用于
Create(String, String, PerformanceCounterCategoryType, CounterCreationDataCollection)
在本地计算机上注册包含指定计数器的自定义性能计数器类别。
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
- counterData
- CounterCreationDataCollection
一个 CounterCreationDataCollection,它指定要作为新类别的一部分创建的计数器。
返回
与新的自定义类别或性能对象关联的 PerformanceCounterCategory。
例外
在 counterData
集合内指定的某计数器名称为 null
或空字符串 ("")。
- 或 -
在 counterData
集合内指定的某计数器已经存在。
- 或 -
counterName
含有无效语法。 它可能包含反斜杠字符 (“\”) 或长度大于 80 个字符。
categoryType
值不在以下值范围内:MultiInstance
、SingleInstance
或 Unknown
。
该类别已存在于本地计算机上。
- 或 -
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 一起安装的性能计数器类别使用单独的共享内存,每个性能计数器类别都有自己的内存。 可以通过在注册表项中创建名为 FileMappingSize 的 DWORD 来指定单独的共享内存的大小,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<类别名称>\Performance。 FileMappingSize 值设置为类别的共享内存大小。 默认大小为十进制131072。 如果 FileMappingSize 值不存在,则 fileMappingSize
使用 Machine.config 文件中指定的元素的属性值 performanceCounters
,从而导致配置文件处理产生额外的开销。 通过在注册表中设置文件映射大小,可以实现应用程序启动的性能改进。
注意
强烈建议在安装应用程序期间创建新的性能计数器类别,而不是在执行应用程序期间。 这允许操作系统有时间刷新其已注册的性能计数器类别列表。 如果尚未刷新列表,则尝试使用类别将失败。
注意
若要从 Windows Vista 及更高版本、Windows XP Professional x64 Edition 或 Windows Server 2003 中的非交互式登录会话读取性能计数器,你必须是 性能监视器 用户组的成员或具有管理权限。
若要避免在 Windows Vista 及更高版本中提升访问性能计数器的权限,请将自己添加到性能监视器用户组。
在 Windows Vista 或更高版本中,用户帐户控制 (UAC) 决定用户的特权。 如果您是内置的 Administrators 组的成员,将为您分配两个运行时访问令牌:一个标准用户访问令牌和一个管理员访问令牌。 默认情况下,您拥有标准用户角色。 若要执行访问性能计数器的代码,必须先将特权从标准用户提升为管理员。 你可以通过以下方式执行此操作:右键单击应用程序图标并指示需以管理员身份运行。