Определение завершения процесса в цикле while [НЕ АКТУАЛЬНО]

DevOps

Client
Регистрация
30.11.2020
Сообщения
496
Благодарностей
314
Баллы
63
Добрый день форумчане. Суть вопроса такова - в процессе работы шаблона через бат файл запускается консоль и выполняются записанные в батнике инструкции. После завершения инструкций консоль закрывается. Процесс Терминал, "дочка"OpenConsole.exe
Как в коде C# осуществить проверку запущенного процесса и в случае если он запущен, уходить Thread.Sleep(10000).а после того как процесс завершится, продолжить выполнение следующих частей кода?
В принципе можнотолько проверять сам процесс терминала Windows 11
Для функционирования шаблона это нужное условие
C#:
while (тут процесс !==true)
{
     Thread.Sleep(10000)
}
Спасибо
 

djaga

Administrator
Команда форума
Регистрация
26.04.2020
Сообщения
549
Благодарностей
1 130
Баллы
93
Добрый день форумчане. Суть вопроса такова - в процессе работы шаблона через бат файл запускается консоль и выполняются записанные в батнике инструкции. После завершения инструкций консоль закрывается. Процесс Терминал, "дочка"OpenConsole.exe
Как в коде C# осуществить проверку запущенного процесса и в случае если он запущен, уходить Thread.Sleep(10000).а после того как процесс завершится, продолжить выполнение следующих частей кода?
В принципе можнотолько проверять сам процесс терминала Windows 11
Для функционирования шаблона это нужное условие
C#:
while (тут процесс !==true)
{
     Thread.Sleep(10000)
}
Спасибо
Нужно добавить в using'и строчку.
using System.Diagnostics;

Проверка работоспособности процесса:
int howManySecondsToWait = 10; // сколько секунд ждать
string searchQuery = "notepad++"; // имя брать из списка процессов, вкладка подробно

for (int i = 0; i < howManySecondsToWait; i++)
{
    IOrderedEnumerable<Process> processes = from proc in Process.GetProcesses(".") orderby proc.Id select proc;

    if (processes.Count(p => p.ProcessName.Contains(searchQuery)) > 0)
    {
        Thread.Sleep(1000);
        project.SendInfoToLog($"Процесс работает.\nИмя процесса: {searchQuery}");
        continue;
    }

    project.SendInfoToLog($"Процесс перестал работать.\nИмя процесса: {searchQuery}");
    break;
}
Приложил проект для примера. ↓
 

Вложения

  • Спасибо
Реакции: Sho и DevOps

DevOps

Client
Регистрация
30.11.2020
Сообщения
496
Благодарностей
314
Баллы
63
Проверка работоспособности процесса:
int howManySecondsToWait = 10; // сколько секунд ждать
string searchQuery = "notepad++"; // имя брать из списка процессов, вкладка подробно

for (int i = 0; i < howManySecondsToWait; i++)
{
    IOrderedEnumerable<Process> processes = from proc in Process.GetProcesses(".") orderby proc.Id select proc;

    if (processes.Count(p => p.ProcessName.Contains(searchQuery)) > 0)
    {
        Thread.Sleep(1000);
        project.SendInfoToLog($"Процесс работает.\nИмя процесса: {searchQuery}");
        continue;
    }

    project.SendInfoToLog($"Процесс найден, перестал работать.\nИмя процесса: {searchQuery}");
    break;
}
А вот за это спасибо, я тоже "допер" что нужен не while. и Вы прямо в точку попали :-)
 
  • Спасибо
Реакции: djaga

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)