好的,我想在Visual Studio 2010中使用PerformanceCounter来获取CPU使用率,但是我遇到的问题是,当我添加PerformanceCounter并尝试添加CategoryName ,列表与CounterNameInstanceName一起为空。

我还尝试使用以下代码添加计数器,但仍然无法正常工作:

Imports System.Diagnostics

Dim myCounter As System.Diagnostics.PerformanceCounter = New System.Diagnostics.PerformanceCounter()

myCounter.CategoryName = "Processor"
myCounter.CounterName = "% Processor Time"
myCounter.InstanceName = "_Total"

ProgressBar1.Value = myCounter.NextValue.ToString
cpuTxt.Text = "CPU Usage: " & ProgressBar1.Value.ToString & "%"

知道为什么会这样吗? 我一直在搜索一段时间,但仍然无法正常工作。 任何帮助是极大的赞赏。

图片: http//s11.postimg.org/y0vnpiwcz/screen.jpg

===============>>#1 票数:1 已采纳

我认为您实际上是在轮询计数器? 尝试这样的事情:

Option Strict On
Option Explicit On
Option Infer Off

Imports System.Diagnostics

Public Class Form1

    Private myCounter As System.Diagnostics.PerformanceCounter = New System.Diagnostics.PerformanceCounter()
    Private WithEvents poll As New Timer

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        myCounter.CategoryName = "Processor"
        myCounter.CounterName = "% Processor Time"
        myCounter.InstanceName = "_Total"
        poll.Interval = 1000
        poll.Enabled = True
    End Sub

    Private Sub poll_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles poll.Tick
        Dim val As Single = myCounter.NextValue
        ProgressBar1.Value = CInt(val)
        cpuTxt.Text = "CPU Usage: " & val.ToString & "%"
    End Sub

End Class

正如Hans PassantPlutonix在评论中都指出的那样,您只应创建一次 counter对象。 每次重新创建计数器只会导致读数为0。

===============>>#2 票数:0

这里可能有两个因素在起作用,PerformanceCounters需要在使用前创建,此操作需要管理员访问计算机或进行足够的升级。

您会注意到,在MSDN提供的示例中,如果计数器当前不存在,则有条件地创建计数器。

https://msdn.microsoft.com/en-us/library/system.diagnostics.performancecounter%28v=vs.110%29.aspx

  ask by Brian Moreno translate from so

未解决问题?本站智能推荐:

1回复

如何重置自定义性能计数器

我使用以下代码创建了一个自定义性能计数器: 一切正常,但我不知道如何重置柜台。 谁能帮我?
2回复

运行负载测试时无法从某些服务器获取性能计数器

我正在使用Visual Studio 2010中的内置系统运行负载测试。该设置是一个带有四个代理的测试控制器。 我正在运行的测试会将负载放在应用程序服务器和数据库服务器上。 我遇到的问题是我无法从应用程序服务器和数据库服务器上的性能计数器获取值。 我已按照http://msdn.micro
1回复

性能计数器以获取进程的CPU和内存使用率

首先,我正在使用Ref开发Visual Basic。 到此预发布线程可以获取进程的CPU和内存使用率的正确性能计数器是什么? 我想在标签或列表框中获取特定进程使用的cpu和内存,假设我要获取notepad.exe的处理器%时间 实际上,我正在制作一个连接MYSQL的面向MYSQL的
3回复

检查当前和外部.Net进程是否启用了性能计数器?

在C#或VB.Net中,并且只有一个进程的PID ,我想知道是否可能在执行时检查相关进程是否启用了性能计数器。 我的意思是在app.config中启用了performanceCounters设置: 但是,我问的是使用反射或其他.Net Framework成员可能存在的正确/内置解决
3回复

VS 2010使用自定义计数器加载测试结果

我是Visual Studio 2010的负载测试(通常是测试)的新手,我正在处理几个问题。 我的问题是,有没有可能在负载测试结果上添加自定义测试变量? 我有以下UnitTest: 许多LoadTests使用此UnitTest,我想将requestDelay变量添加到负载测试
2回复

使用VsPerfCmd.exe,一个信任硬件计数器配置应该进行到多远?

我正在尝试使用VsPerfCmd.exe来分析分支的错误预测和已检测到的本机应用程序中的最后一级缓存未命中。 该设置按锡盒上的说明工作,但是我得到的结果似乎并不明智。 例如,据报道,始终触摸24MB数据集的功能在被调用〜2000次时只会导致〜700个高速缓存未命中。 现在让我来看一下-
1回复

为什么性能计数器根本不起作用

由于某种原因,我的效果计数器无法正常工作。 我看到这个性能计数器可以在其他人的笔记本电脑和台式机上工作,但不能在我的笔记本电脑上工作。 它没有可供我选择的列表,其他人根本没有这个问题。 即使我从服务器管理器中捕获了它,并将其放在表单上,​​它仍然显示“ System.Diagnostic.
1回复

为什么我的ASP.NET MVC多实例性能计数器不起作用

我很难让我们的多实例性能计数器在ASP.NET MVC 3中工作。将其创建为单个实例可以正常工作,并且在简单的控制台应用程序中运行我们的多实例性能计数器代码也可以正常工作。 但是,当我创建它的多实例并尝试使用ASP.NET对其进行递增时,它似乎很难工作。 我没有例外。 我根本看不到性能
1回复

取消注册性能计数器

我已经在我的应用程序中添加了性能自定义计数器,以确定操作是否发生。 但现在我想取消注册它。 是否可以取消注册将其删除。 我在C#中使用过这个计数器。 创建性能类别并向其添加计数器的类。 计数器递增的代码: 谢谢和问候,Tazim。
2回复

性能计数器的使用

我已经用C#编写了一些用于负载测试的代码。 该代码假定向IM客户端发送大量文件。 现在,我需要通过监视发送或不发送的实际文件数量来检查代码的性能。 阅读有关在C#中使用PerformanceCounter类的信息。 是否可以使用此类计算/监视使用该类成功发送的文件数? 是可行的。 任