Как проверить, если процесс умер или нет от службы - PullRequest
0 голосов
/ 08 марта 2019

Как я могу проверить из службы C #, не работает ли другое приложение или нет?

Я пытался использовать Process.Responding, он возвращает true, но приложение умерло.

enter image description here

Это код:

private List<string> getListStringGAppPath()
    {
        List<string> listGAppPaths = new List<string>();
        Process[] processes = Process.GetProcessesByName("MyApp");

        if (processes.Length > 0)
        {
            for (int i = 0; i < processes.Length; i++) {
                listGAppPaths.Add(processes[i].Responding.ToString() + "@@@@@@" + processes[i].MainModule.FileName);
                //processes[i].Responding.ToString() always return True
            }
            return listGAppPaths;
        }
        else
        {
            return null;
        }
    }

Ответы [ 3 ]

0 голосов
/ 08 марта 2019

Вы можете использовать методы из System.Diagnostics.Process для получения информации о процессе.

GetProcessesByName(String)

Создает массив новых компонентов процесса и связывает их со всеми ресурсами процесса на локальном компьютере.компьютер с одинаковым именем процесса.

GetProcessById(Int32)

Возвращает новый компонент процесса с учетом идентификатора процесса на локальном компьютере.

GetProcesses()

Создает новый компонент процесса для каждого ресурса процесса на локальном компьютере.

Если процесс не существует, значит, он умер?

0 голосов
/ 08 марта 2019

Вы можете проверить, отвечает ли процесс:

foreach (var process in System.Diagnostics.Process.GetProcesses())
{
    Console.WriteLine("Process Name: {0}, Responding: {1}", process.ProcessName, process.Responding);
}

Аналогично этому ответу: Проверка состояния процесса

0 голосов
/ 08 марта 2019

Когда процесс умирает, Windows, кажется, переключает его состояние на Suspended, вы можете сначала попробовать проверить его состояние. Также здесь: Обнаружение сбоя процесса в .NET

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...