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

C# 形式の回答へのリンクを提供してくれたHans Passantに感謝します。これは、 name ではなく Process I によって 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 に答える