Язык программирования C#9 и платформа .NET5 - Джепикс Филипп - Страница 272
- Предыдущая
- 272/642
- Следующая
Изменить размер шрифта:
272
-> PID: 908 Name: svchost-> PID: 920 Name: smss-> PID: 1016 Name: csrss-> PID: 1020 Name: NVDisplay.Container-> PID: 1104 Name: wininit-> PID: 1112 Name: csrss************************************Исследование конкретного процесса
В дополнение к полному списку всех выполняющихся процессов на заданной машине статический метод
Process.GetProcessById()ProcessArgumentExceptionProcess// Если процесс с PID, равным 30592, не существует,// то сгенерируется исключение во время выполнения.static void GetSpecificProcess(){ Process theProc = null; try { theProc = Process.GetProcessById(30592); } catch(ArgumentException ex) { Console.WriteLine(ex.Message); }}К настоящему моменту вы уже знаете, как получить список всех процессов, а также специфический процесс на машине посредством поиска по PID. Наряду с выяснением идентификаторов PID и имен процессов класс
ProcessИсследование набора потоков процесса
Набор потоков представлен в виде строго типизованной коллекции
ProcessThreadCollectionProcessThreadstatic void EnumThreadsForPid(int pID){ Process theProc = null; try { theProc = Process.GetProcessById(pID); } catch(ArgumentException ex) { Console.WriteLine(ex.Message); return; } // Вывести статистические сведения по каждому потоку // в указанном процессе. Console.WriteLine( "Here are the threads used by: {0}", theProc.ProcessName); ProcessThreadCollection theThreads = theProc.Threads; foreach(ProcessThread pt in theThreads) { string info = $"-> Thread ID: {pt.Id}\tStart Time: {pt.StartTime.ToShortTimeString()}\tPriority: {pt.PriorityLevel}"; Console.WriteLine(info); } Console.WriteLine("************************************\n");}Как видите, свойство
ThreadsSystem.Diagnostics.ProcessProcessThreadCollection...// Запросить у пользователя PID и вывести набор активных потоков.Console.WriteLine("***** Enter PID of process to investigate *****");Console.Write("PID: ");string pID = Console.ReadLine();int theProcID = int.Parse(pID);EnumThreadsForPid(theProcID);Console.ReadLine();После запуска приложения можно вводить PID любого процесса на машине и просматривать имеющиеся внутри него потоки. В следующем выводе показан неполный список потоков, используемых процессом с PID 3804, который (так случилось) обслуживает браузер Edge:
***** Enter PID of process to investigate *****PID: 3804Here are the threads used by: msedge-> Thread ID: 3464 Start Time: 01:20 PM Priority: Normal-> Thread ID: 19420 Start Time: 01:20 PM Priority: Normal-> Thread ID: 17780 Start Time: 01:20 PM Priority: Normal-> Thread ID: 22380 Start Time: 01:20 PM Priority: Normal-> Thread ID: 27580 Start Time: 01:20 PM Priority: -4…************************************Помимо
IdStartTimePriorityLevelProcessThread
272
- Предыдущая
- 272/642
- Следующая
Перейти на страницу:
