Devi "giocare" con la proprietà TotalProcessorTime dell'oggetto Process collegato al processo che devi analizzare. Salvati il valore di tale proprietà, attendi un secondo (con la Thread.Sleep), effettua la differenza tra il nuovo valore di TotalProcessorTime e quello vecchio e usane la proprietà Milliseconds, ottenendo così i millisecondi di CPU impiegata in un secondo; moltiplica per 10 per ottenere la percentuale di CPU impiegata in un secondo.
Esempio:
codice:
Imports System
Imports System.Diagnostics
Imports System.Threading
Namespace Namespace1
Public Module Module1
Public Function Main(ByVal arguments() As String) As Integer
Dim strPID As String, pID As Integer, proc As Process
Console.Write("PID: ")
strPid = Console.ReadLine()
If Not Integer.TryParse(strPID, pID) Then
Console.WriteLine("Invalid number.")
Return 1
End If
Try
proc = Process.GetProcessById(pID)
Catch ex As System.ArgumentException
Console.WriteLine("Invalid PID.")
Return 2
End Try
While Not proc.HasExited
Dim ts As TimeSpan
ts = proc.TotalProcessorTime
Thread.Sleep(1000)
If Proc.HasExited Then Exit While
Console.WriteLine("CPU time: {0}%",(proc.TotalProcessorTime-ts).Milliseconds/10) 'ottengo i millisecondi di CPU occupati in un secondo, moltiplico per 10 per ottenere la percentuale
End While
Return 0
End Function
End Module
End Namespace
.