演练:更改和检索性能计数器值

更新:2007 年 11 月

本演练中的过程演示如何使用 PerformanceCounter 类上的方法来使用性能计数器的值。性能计数器是 Windows 收集不同系统资源上性能数据的方法。Windows 包含一组预定义的计数器,组织成类别,您可以与它们进行交互。从计数器检索的值既可以是原始值,也可以是随时间变化的计算值。有多种方法可用来增加和减少计数器的当前值。

在本演练的过程中,您将:

  • 创建并配置 PerformanceCounter 组件以与系统提供的计数器进行交互。

  • 创建包含 UI 元素的 Windows 应用程序,这些 UI 元素检索并显示计数器中的值。

  • 编写使用 RawValue 属性的代码,设置并检索计数器的原始值。

  • 编写使用 IncrementIncrementByM:System.Diagnostics.PerformanceCounter.Decrement 方法的代码,更改计数器的值并检索其新值。

说明:

对于在以下说明中使用的某些 Visual Studio 用户界面元素,您的计算机可能会显示不同的名称或位置。这些元素取决于您使用的 Visual Studio 版本及设置。有关更多信息,请参见Visual Studio 设置

创建 Windows 应用程序

  1. 在“文件”菜单上指向“新建”,然后单击“项目”。

  2. 在“新建项目”对话框中,创建 Visual Basic 或 Visual C# 的“Windows 应用程序”。将项目命名为 PerformanceCounterExample。

  3. 在“工具箱”的“Windows 窗体”选项卡中,向应用程序添加以下控件:

    • 两个标签

    • 一个文本框

    • 五个按钮

  4. 在控件上设置以下属性:

    控件

    属性

    Label1

    Name

    lblCounterValue

     

    Text

    (空白)

    Label2

    Name

    lblSystemCounterValue

     

    Text

    (空白)

    Textbox1

    Name

    txtValue

     

    Text

    (空白)

    Button1

    Name

    btnSetRawValue

     

    Text

    设置自定义计数器的原始值

    Button2

    Name

    btnGetNextValue

     

    Text

    获取系统计数器的下一个值

    Button3

    Name

    btnIncrement

     

    Text

    将自定义计数器的值增加 1

    Button4

    Name

    btnDecrement

     

    Text

    将自定义计数器的值减少 1

    Button5

    Name

    btnIncrementBy

     

    Text

    将自定义计数器增加一个值

  5. 随意排列控件。

  6. 保存您的工作。

创建并配置 PerformanceCounter 组件

  1. 打开“服务器资源管理器”并访问“服务器”节点。有关更多信息,请参见如何:访问和初始化服务器资源管理器/数据库资源管理器

  2. 在“服务器”节点下找到您的计算机列表并展开它。您将看到性能计数器、消息队列、事件日志和服务的项。

  3. 展开“性能计数器”节点并找到“Processor”节点。

  4. 找到“% Processor Time”节点并将其展开。

  5. 将 _Total 计数器拖到窗体上。为 _Total 计数器配置的 PerformanceCounter 组件被添加到项目中。此组件在 Visual Basic 中命名为 PerformanceCounter1,在 Visual C# 中命名为 performanceCounter1。

检索系统计数器的原始值

  • 在设计器中,双击“获取系统计数器的下一个值”按钮以创建 Click 事件处理程序。该方法将报告计数器的计算值,而不是原始值。添加以下代码来检索并显示 PerformanceCounter 实例正在监视的计数器的下一个值:

    Private Sub btnGetNextValue_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles btnGetNextValue.Click
       lblSystemCounterValue.Text = _
          "The current value of the system counter is: " _
          & PerformanceCounter1.NextValue().ToString()
    End Sub
    
    private void btnGetNextValue_Click(object sender, System.EventArgs e)
    {
       lblSystemCounterValue.Text = 
          "The current value of the system counter is: " 
          + performanceCounter1.NextValue().ToString();
    }
    

在剩下的过程中,您将使用自定义类别和计数器。

创建自定义计数器和类别

  1. 在“视图”菜单中,单击“设计器”以访问 Form1 的设计器。

  2. 在设计器中,打开“服务器资源管理器”并访问“服务器”节点。有关更多信息,请参见如何:访问和初始化服务器资源管理器/数据库资源管理器

  3. 在“服务器”节点下找到您的计算机列表并展开它。

  4. 右击“性能计数器”节点,再单击“创建新类别”。

    将出现“性能计数器生成器”对话框。

  5. 在“类别名称”中输入 MyNewCategory。

  6. 单击“新建”添加新的计数器,将其命名为 MyNewCounter。单击“确定”以创建新类别和计数器。

    说明:

    本步骤需要注册表的写权限。如果您无法创建新计数器,请与系统管理员联系。

  7. 在“服务器资源管理器”中,浏览到新计数器并将其拖到窗体上。为新计数器 MyNewCounter 配置的新 PerformanceCounter 组件将添加到项目中。

    说明:

    这些步骤在您的计算机上创建计数器。如果要部署此应用程序,则必须在目标计算机上创建计数器。通过将安装程序添加到项目中,可以完成该任务。选择 PerformanceCounter 对象,然后在“属性”窗口中单击“添加安装程序”。(如果此命令不可用,请右击“属性”窗口并单击“命令”。) 有关更多信息,请参见 安装组件介绍

设置自定义计数器的原始值

  1. 在设计器中,选择 Visual Basic 中的 PerformanceCounter2 或 Visual C# 中的 performanceCounter2。

  2. ReadOnly 属性设置为 false。

  3. 双击 btnSetRawValue 按钮,在代码编辑器中创建 Click 事件处理程序。

  4. 添加以下代码,设置所创建的计数器的原始值,并在第一个标签控件中显示计数器的值。

    Private Sub btnSetRawValue_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles btnSetRawValue.Click
       PerformanceCounter2.RawValue = CLng(txtValue.Text)
       lblCounterValue.Text = PerformanceCounter2.NextValue().ToString()
    End Sub
    
    private void btnSetRawValue_Click(object sender, System.EventArgs e)
    {
       performanceCounter2.RawValue = long.Parse(txtValue.Text);
       lblCounterValue.Text = performanceCounter2.NextValue().ToString();
    

    }

将自定义计数器的值增加 1 并显示它

  1. 在设计器中,双击“将自定义计数器的值增加 1”按钮以在代码编辑器中创建 Click 事件处理程序。

  2. 添加以下代码,使自定义计数器增加 1,并在第一个标签控件中显示计数器的值。

    Private Sub btnIncrement_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles btnIncrement.Click
       PerformanceCounter2.Increment()
       lblCounterValue.Text = PerformanceCounter2.NextValue().ToString()
    End Sub
    
    private void btnIncrement_Click(object sender, System.EventArgs e)
    {
       performanceCounter2.Increment();
       lblCounterValue.Text = performanceCounter2.NextValue().ToString();
    

    }

减少自定义计数器的值并显示该值

  1. 在设计器中,双击“将自定义计数器的值减少 1”按钮以在代码编辑器中创建 Click 事件处理程序。

  2. 添加以下代码,使计数器值减少 1,并在第一个标签控件中显示计数器的值。

    Private Sub btnDecrement_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles btnDecrement.Click
       PerformanceCounter2.Decrement()
       lblCounterValue.Text = PerformanceCounter2.NextValue().ToString()
    End Sub
    
    private void btnDecrement_Click(object sender, System.EventArgs e)
    {
       performanceCounter2.Decrement();
       lblCounterValue.Text = performanceCounter2.NextValue().ToString();
    

    }

按用户定义的值增加自定义计数器的值

  1. 在设计器中,双击“将自定义计数器增加一个值”按钮以在代码编辑器中创建 Click 事件处理程序。

  2. 添加以下代码,使计数器值增加文本框中输入的值,并在第一个标签控件中显示计数器的值。

    Private Sub btnIncrementBy_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles btnIncrementBy.Click
       PerformanceCounter2.IncrementBy(CLng(txtValue.Text))
       lblCounterValue.Text = PerformanceCounter2.NextValue().ToString()
    End Sub
    
    private void btnIncrementBy_Click(object sender, System.EventArgs e)
    {
       performanceCounter2.IncrementBy(long.Parse(txtValue.Text));
       lblCounterValue.Text = performanceCounter2.NextValue().ToString();
    }
    

测试应用程序

  1. 保存文件。

  2. 按 F5 键编译并启动应用程序。

  3. 单击“获取系统计数器的下一个值”按钮以检索处理器类别的计数器的当前值。由于您正在使用 NextValue() 方法检索值,因此第一次调用将返回 0。

    您应该看到当前值显示在标签中。

  4. 在文本框中键入 25 并单击“设置自定义计数器的原始值”。

    应该更新标签字段以指示原始值现在为 25。

  5. 单击“将自定义计数器的值增加 1”按钮。

    标签中的值应增加 1。

  6. 单击“将自定义计数器的值减少 1”按钮。

    标签中的值应减少 1。

  7. 在文本框中输入 25 并单击“将自定义计数器增加一个值”。

    标签中的值应增加 25。

    您还可以在 Windows 性能工具中查看性能计数器。

在 Windows 性能工具中查看性能计数器

  1. 打开“性能”工具,此工具是“Microsoft 管理控制台”的一部分。请参考操作系统“帮助”,以找到用于打开“性能”工具的步骤。

  2. 右击性能关系图下面的计数器列表,然后单击“添加计数器”。

  3. 从“性能对象”列表中选择“MyNewCategory”,并从计数器列表选择“MyNewCounter”。单击“添加”完成。

  4. 单击工具栏中的“查看报表”以显示计数器的值。

请参见

概念

监视性能阈值的介绍

其他资源

监视性能阈值

性能计数器演练