Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [VB.Net] % CPU utilizzata da un processo e utente che lo sta utilizzando

    Vorrei sapere come fare per visualizzare la percentuale di CPU utilizzata da un processo, per la somma di tutti i processi uso questo codice:

    Private CpuUsedTotal As New System.Diagnostics.PerformanceCounter("Processor", "% Processor Time", "_Total")

    Ma per un singolo processo???
    Poi volevo sapere come faccio ad avere il nome dell'utente (es. SYSTEM) che utilizza quel processo, se non avete capito basta guardare il Task Manager di Windows.
    Grazie, ...

  2. #2
    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
    .
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Ottimo!!! Riesci sempre a soddisfare eccellentemente le mie richieste!

  4. #4
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Comunque avevo fatto anche un'altra domanda, sapere quele è il nome dell'utente che utilizza il processo!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.