У меня есть код C#, который использует командную строку для вызова сценария python. Для выполнения скрипта требуется около 25 секунд. При запуске в командной строке сценарий python имеет несколько выходов до окончательного вывода «done». Мой код C# запускает скрипт, но никогда не закрывает командную строку, если я использую «WaitForExit». Поэтому я считаю, что мне нужна какая-то логика, чтобы проверить, было ли сделано «сделано», но Интернет не очень помог с методологией.Отображение результата работающего cmd-процесса
Вот что у меня есть, оно в настоящее время выводит только первую строку «Microsoft Windows [Version 6.1.7601]». Очевидно, ничего хорошего.
var p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.WorkingDirectory = @"C:\Optimization";
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.Start();
p.StandardInput.WriteLine(@"ipy spot_for_labview.py");
StreamReader mySR = p.StandardOutput;
string mystr = mySR.ReadLine();
Debug.WriteLine(mystr);
p.WaitForExit(25000); //25000 is a placeholder until better method found.
p.Close();
Если есть в любом случае, чтобы закрыть процесс после того, как он закончит, или получить все выходные CMD я все уши.
Любая помощь приветствуется.
Ваше первое предложение не кажется, выводить что угодно. Я не вижу, как это может работать без какой-либо структуры событий или цикла, когда он впервые попадает в строку «Debug.WriteLine», результат, который мне нужен, еще не произошел. Если я использую p.BeginOutputReadLine(), какой другой метод мне нужно использовать для захвата вывода? Я не могу использовать p.StandardOutput, по-видимому, это синхронизация. –
это Так ссылка может помочь !!! - http://stackoverflow.com/questions/206323/how-to-execute-command-line-in-c-get-std-out-results – dekdev
Похоже, что process.BeginOutputReadLine() - это все, что необходимо, и это делает все видно? Не работает в моем случае. –