2016-10-09 4 views
-1

Мне нужно задать вопрос, который я действительно не мог найти в Интернете .. Я использую Process для открытия cmd в моем приложении C#. Мне нужно передать некоторые команды, но после каждой команды, мне нужно, чтобы убедиться, что эта команда закончена, так что я мог бы продолжить другой! .. как это возможно с System.Diagnostics ... вот мой код, который я пытался ..Продолжить после определенной команды в конце концов

var startInfo = new ProcessStartInfo 
     { 
      FileName = "cmd.exe", 
      RedirectStandardInput = true, 
      RedirectStandardOutput = true, 
      UseShellExecute = false, 
      CreateNoWindow = false, 
      WorkingDirectory = @"E:/Visual Studio 2013/" + project_Name + "/packages/NUnit.ConsoleRunner.3.4.1/tools" 
     }; 

     var process = new Process { StartInfo = startInfo }; 

     process.Start(); 
     process.StandardInput.WriteLine("nunit3-console.exe E:/Debug/Report_Testing.dll"); 


     process.WaitForExit();  

ждать выхода здесь бесконечно зависает, и я не могу пройти эту строку кода. какое решение для этого!?

ответ

0

Попробуйте добавить опцию /c nunit3-console.exe E:/Debug/Report_Testing.dll.

Как и сейчас, он будет работать cmd, и после команды команда останется в живых. WaitForExit ждет cmd, чтобы закончить, и он никогда не будет.

+0

Я не могу понять вас Uno, извините, я хочу знать, когда команда заканчивается ... что делает опция/k? также вы хотите, чтобы я добавил его в строку строки? –

+0

@ OmarEl-elamy ваш процесс начинается 'cmq', а не бегун nunit, поэтому он привязан к этому для завершения. Если вы хотите закрыть его в своем коде, вы должны отправить 'exit' в командную строку, но я не думаю, что это было бы очень элегантно. –

+0

Тест-бегун работает как ** ребенок ** из cmd, поэтому, даже если бегун выходит, родитель не делает этого. –

-1

мне удалось получить к решению:

Я добавил это в моей команде WriteLine и изменил его быть похожим на это:

 process.StandardInput.WriteLine("nunit3-console.exe E:/Debug/Report_Testing.dll" + "&" +"exit"); 

// Затем с помощью ждать выхода process.WaitForExit();

этим я убедился, что команда выполнена.

+0

Это действительно противно, я попытался бы выполнить команду один раз. – user4388177

+0

один раз команда как ?? я просто хочу закончить его, а затем выйти ?? –

Смежные вопросы