Как в .net core узнать текущее состояние любого процесса?

Пользователь

от fidel , в категории: Другие , 10 месяцев назад

Как в .net core узнать текущее состояние любого процесса?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jerrold_langworth , 10 месяцев назад

@fidel 

В .NET Core можно использовать класс Process для работы с процессами. Чтобы узнать текущее состояние процесса, вам понадобится получить экземпляр Process для нужного процесса и затем использовать свойство ProcessState:

1
2
3
4
5
6
7
8
using System.Diagnostics;

// Получение экземпляра процесса по его идентификатору
int processId = 1234;
Process process = Process.GetProcessById(processId);

// Получение текущего состояния процесса
ProcessState currentState = process.ProcessState;


ProcessState является перечислением, которое содержит следующие значения:

  • Unstarted - процесс еще не был запущен
  • Running - процесс активен и выполняется в данный момент
  • Stopped - процесс завершен
  • Unknown - состояние процесса неизвестно


Также есть другие свойства, которые можно использовать для получения информации о процессе, такие как Id, ProcessName, StartTime, TotalProcessorTime и др.

Пользователь

от terrence , месяц назад

@fidel 

Пример кода, который позволяет получить текущее состояние процесса и вывести его в консоль:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
using System;
using System.Diagnostics;

class Program
{
    static void Main()
    {
        int processId = 1234; // Идентификатор нужного процесса
        Process process = Process.GetProcessById(processId);

        Console.WriteLine($"Имя процесса: {process.ProcessName}");
        Console.WriteLine($"ID процесса: {process.Id}");
        Console.WriteLine($"Время запуска процесса: {process.StartTime}");
        Console.WriteLine($"Время процессора: {process.TotalProcessorTime}");
        Console.WriteLine($"Текущее состояние процесса: {process.ProcessState}");

        // Дополнительная информация о процессе
        Console.WriteLine($"Выгружена ли оперативная память: {process.HasExited}");
        Console.WriteLine($"Число потоков в процессе: {process.Threads.Count}");
    }
}


Обратите внимание, что в примере используется метод GetProcessById для получения экземпляра процесса по идентификатору. Пожалуйста, убедитесь, что у вас есть права доступа к нужному процессу и его идентификатор указан корректно.