Sto scrivendo un programma che utilizza il contatore delle prestazioni .NET per ottenere l'utilizzo della CPU, della memoria e della rete per un processo specifico.Monitorare le prestazioni della rete per un processo specifico
Ad esempio, per ottenere i dati della CPU e memoria per Explorer
, creo contatori delle prestazioni in questo modo:
PerformanceCounter PC = new PerformanceCounter();
PC.CategoryName = "Process";
PC.CounterName = "% Processor Time";
PC.InstanceName = "Explorer";
PerformanceCounter PC = new PerformanceCounter();
PC.CategoryName = "Process";
PC.CounterName = "Working Set - Private";
PC.InstanceName = "Explorer";
Purtroppo, non v'è alcuna proprietà per il processo di categoryName
che mi permette di ottenere l'utilizzo della rete per quella processi. Posso usare l'interfaccia di rete categoryName
per ottenere l'utilizzo generale della rete su qualsiasi scheda di rete particolare, ma non posso isolarla per un determinato processo.
sembra che ci sia qualcosa di simile chiesto prima: http: //stackoverflow.com/questions/438240/monitor-a-processs-network-usage – Dilshod
Questa è una limitazione architettonica. Questi contatori sono implementati dallo stack dei driver di rete. Che gira in modalità kernel, non ha consapevolezza del processo usermode. Lo stesso tipo di motivo per cui FileSystemWatcher non può dirti quale processo ha modificato un file. –