如何:配置 PerformanceCounter 组件实例

更新:2007 年 11 月

在创建的 PerformanceCounter 组件上有多个必须设置的属性。这些属性确定组件将与之交互的计数器。必须设置的属性包括以下属性:

  • CategoryName,该属性确定组件将与之交互的性能对象。Windows 中的所有性能计数器都按类别(例如“内存”、“进程”和“处理器”)分组。

  • CounterName,该属性在指定的类别中标识组件将与之交互的计数器。

  • InstanceName,该属性标识组件将与之交互的类别实例。请注意,许多类别不包含实例。因此,此属性可能保留为空白。这指示单实例计数器。

    说明:

    如果“类别”设置为不是由用户定义的类别,则必须从现有的计数器和实例中进行选择。您只能在自定义类别中创建新的计数器和实例。例如,您不能在“内存”类别中创建新的计数器,但如果您创建一个名为“订单”的新类别,您就能在该类别中定义任意多个计数器和实例。

  • MachineName,该属性标识组件将与之交互的性能计数器所驻留的服务器。可以将此属性设置为“.”来表示本地计算机,或者将其保留为空白以默认使用该值。

  • ReadOnly,该属性确定是否可以写入所创建的任何自定义计数器。默认情况下,配置用来与现有 Windows 计数器一同工作的任何 PerformanceCounter 组件实例都将以只读模式运行,并且不允许更改这些计数器中的值。但是,当您将组件实例配置为与自定义计数器一起工作时,则可以选择接受以只读模式工作的默认设置,或者将属性值重置为 false 以允许写入值。

    说明:

    只能在本地计算机上写入计数器。如果想要读取计数器值,可以选择能够访问的任何计算机。

配置 PerformanceCounter 组件的实例

  1. 创建 PerformanceCounter 组件的实例。有关更多信息,请参见 如何:创建 PerformanceCounter 组件实例

  2. 通过设置以下属性,指示组件应与之交互的计数器。

    属性

    设置

    MachineName

    能够访问的任何服务器。

    CategoryName

    存在于服务器上的任何类别。

    CounterName

    选定类别内的任何计数器。

  3. 如果与之交互的计数器具有多个实例,请将最适合的一个实例设置为 InstanceName 属性的值。

  4. 如果正在使用自定义计数器并需要写访问权限,请将 ReadOnly 属性设置为 false。

    说明:

    可以在“属性”窗口中使用代码指定这些属性,也可以使用 PerformanceCounter 组件实例的构造函数的特殊形式来指定这些属性。

    下面的示例显示如何编程设置这些值,以便连接到本地服务器上称为“aborted transactions”的现有 Windows 性能计数器。

    ' Connect to an existing Windows counter and category
    Dim abortedTransactions As New PerformanceCounter()
    abortedTransactions.CategoryName = _
       "distributed transaction coordinator"
    abortedTransactions.CounterName = "aborted transactions"
    abortedTransactions.MachineName = "."
    ' Connect to a custom counter and category in writable mode
    PerformanceCounterCategory.Create("orders", "desc", _
    PerformanceCounterCategoryType.SingleInstance, "milk", "desc")
    Dim myCounter2 As New PerformanceCounter("orders", "milk", False)
    
         // Connect to an existing Windows counter and category
            System.Diagnostics.PerformanceCounter abortedTransactions =
               new System.Diagnostics.PerformanceCounter();
            abortedTransactions.CategoryName =
               "distributed transaction coordinator";
            abortedTransactions.CounterName = "aborted transactions";
            abortedTransactions.MachineName = ".";
            // Connect to a custom counter and category in writable mode
            System.Diagnostics.PerformanceCounterCategory.Create(
               "orders", "desc", PerformanceCounterCategoryType.SingleInstance,
               "milk", "desc");
            System.Diagnostics.PerformanceCounter myCounter2 =
               new System.Diagnostics.PerformanceCounter("orders", "milk", false);
    
说明:

在这段代码中,“.”表示本地计算机。

请参见

任务

如何:创建 PerformanceCounter 组件实例

如何:创建自定义性能计数器

概念

类别和计数器管理