#c_sharp #производительность #счетчики #мониторинг
Мне необходимо получить данные системы как в мониторинге ресурсов Windows. А именно работу каждого процесса с файлами и статистику. Данные из верхней таблице нашел через GetPidIoCounters и структуру IO_COUNTERS а вот данные из нижней сетки не получается.
Ответы
Ответ 1
1) Через WMI, класс Win32_Process, как с ним работать написано тут и тут 2) Через PerformanceCounter void Main() { Process p = Process.GetProcesses()[0]; PerformanceCounter ramCounter = new PerformanceCounter("Process", "Working Set", p.ProcessName); PerformanceCounter cpuCounter = new PerformanceCounter("Process", "% Processor Time", p.ProcessName); PerformanceCounter privateCounter = new PerformanceCounter("Process", "Private Bytes", p.ProcessName); while (true) { Thread.Sleep(1000); double ram = ramCounter.NextValue(); double cpu = cpuCounter.NextValue(); double privateBytes = privateCounter.NextValue(); Console.WriteLine("RAM: "+(ram/1024/1024)+" MB; CPU: "+(cpu)+" %; " + privateBytes/1024/1024 + " MB"); } }Ответ 2
Вам нужен класс PerfomanceCounter: Примерно так будет: foreach(var process in Process.GetProcesses()) { PerformanceCounter pcRead = new PerformanceCounter("Process", "IO Write Bytes/sec", process.ProcessName); PerformanceCounter pcWrite = new PerformanceCounter("Process", "IO Read Bytes/sec", process.ProcessName); Console.WriteLine($"Read: {pcRead.NextValue()} + %"); Console.WriteLine($"Write: {pcWrite.NextValue()} + %"); } Пример описание использования Список категорий для процессов
Комментариев нет:
Отправить комментарий