Закрытие процесса после определенного периода времени - PullRequest
0 голосов
/ 12 октября 2019

Здравствуйте, поэтому я в настоящее время разрабатываю программу, которая поможет мне автоматизировать функциональность скрипта Python, после долгих исследований я нашел способ запустить и прочитать вывод скрипта Python в окно консоли C #, но я хочуреализовать временное условие для его остановки (например, закрыть процесс через 5 минут). Мой код для открытия процесса выглядит следующим образом (кредит от первоначального автора):

 var process = new Process
            {
                StartInfo = new ProcessStartInfo
                {
                    FileName = "C:\\Python27\\python.exe",
                    Arguments = cmd,
                    UseShellExecute = false,
                    RedirectStandardOutput = true,
                    RedirectStandardError = true,
                    CreateNoWindow = true
                },
                EnableRaisingEvents = true
            };
            process.ErrorDataReceived += Process_OutputDataReceived;
            process.OutputDataReceived += Process_OutputDataReceived;

            process.Start();
            process.BeginErrorReadLine();
            process.BeginOutputReadLine();

            process.WaitForExit();
            Console.Read();

Как вы можете видеть, процесс ожидает завершения, но иногда сценарий может останавливаться или работать неправильно, яхотел бы добавить условие, основанное на времени, чтобы закрыть процесс, если он не завершен через 5 минут. Я записываю время с помощью класса StopWatch, но при затруднении нацеливания процесса на его закрытие, 5 разных процессов скрипта python запускаются одновременно, поэтому закрытие процесса python не будет жизнеспособным. Я также использую process.WaitForExit ();который ожидает завершения процесса, но, как я уже говорил выше, это не всегда так, поэтому возникают проблемы с процессами, которые никогда не закрываются.

TL; DR: если процесс занимает более 5 минут -> Forceзакрыть

Есть предложения, пожалуйста?

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