Процесс (CMD) не закрыт, поэтому новый процесс не может быть запущен - PullRequest
0 голосов
/ 03 января 2019

Я создал класс CMDHandler для обработки всех моих команд CMD, которые у меня есть в моем проекте.

Например:

CMDHandler.Run ("/ c \" "+ DWClientSetupChainerV1 +" \ "");

CMDHandler.Run ("taskkill / F / IM \" DWClientSetupChainerV1 .exe \ "");

Хотя кажется, что процесс моего CMDHandler никогда не закрывается, и поэтому он не может запустить второй. У кого-то есть идея, что я делаю неправильно? К вашему сведению: Код выхода не всегда использовался.

namespace Automated_Tests
{
    class CMDHandler
    { 
        private static readonly ILogger logger = LoggerFactory.Create(typeof(Program));

        public int Run(string command)
        {
            var proc = new Process();

            try
            {
                ProcessStartInfo startInfo = new ProcessStartInfo()
                {
                    FileName = "CMD",
                    Arguments = command,
                    UseShellExecute = false
                };
                proc = Process.Start(startInfo);
                proc.WaitForExit();

                return proc.ExitCode;
            }
            catch (Exception ex)
            {
                logger.Log(LogLevel.Error, ex.Message);
            }
            finally
            {
                proc.Close();
            }
            return 0;
        }
    }
}

1 Ответ

0 голосов
/ 10 января 2019

Я нашел обходной путь, создав отдельные задачи для моего метода CMDHandler.Run:

Task setupTask = new Task(() => CMDHandler.Run("/c  \"" + DWClientSetupChainerV1 + "\""));
setupTask.Start();
Thread.Sleep(10000);
Task killSetupTask = new Task(() => CMDHandler.Run("/c taskkill /F /IM \"DWClientSetupChainerV1.exe\"", true));
killSetupTask.Start();
Task.WaitAll(setupTask, killSetupTask);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...