2

我有一个进程 ID,我需要获取进程的 CPU 使用率,即% Processor Time

例如,这里有一个简单的函数来返回 AppName 的 CPU 使用情况:

Private Function Get_CPU_Usage(AppName as String)
   Dim AppCPU As New PerformanceCounter("Process", "% Processor Time", AppName, True)
   Return AppCPU.NextValue
End Function

这可能是错误的,但这只是一个例子。

我需要做这样的事情:

Private Function Get_CPU_Usage(ProcessID as Integer)
   Dim AppCPU As New PerformanceCounter("Process", "% Processor Time", ProcessID, True)
   Return AppCPU.NextValue
End Function

注意 ProcessID 与 AppName。我有多个使用相同名称运行的进程;每个应用程序的 PID 都存储在我的程序中。我知道我可以遍历...

PerformanceCounter("Process", "ID Process", AppName, True)

查找进程名称,如app、app#1、app#2,但似乎效率低下且草率。

这里推荐的程序是什么?

4

1 回答 1

1

感谢Hans Passant以 C# 形式提供答案的链接,这是由 Process I 而不是 name 从 Performance Counter转换而来的 VB.net 函数:

Public Shared Function GetProcessInstanceName(ByVal PID As Integer) As String
    Dim cat As New PerformanceCounterCategory("Process")
    Dim instances() = cat.GetInstanceNames()
    For Each instance In instances
        Using cnt As PerformanceCounter = New PerformanceCounter("Process", "ID Process", instance, True)
            Dim val As Integer = CType(cnt.RawValue, Int32)
            If val = PID Then
                Return instance
            End If
        End Using
    Next
End Function
于 2013-02-18T07:08:50.723 回答