У меня проблема, мне нужно выполнить консольную программу, и я должен показать выходную информацию этой консоли в своей программе. У меня есть строковая переменная, называемая «результат», которая должна хранить эту информацию, но всегда является нулевой, и я не знаю, почему. Может кто-нибудь мне помочь? Я поставил код ниже:Чтение с внешней программы/консоли
Process p = new Process();
p.StartInfo.FileName = "python";
p.StartInfo.Arguments = @"C:\Users\xxx\xxx\xxx\xxx_\xxx yyy\zzz.py " + path;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.UseShellExecute = false;
p.Start();
StreamReader sr = p.StandardOutput;
p.WaitForExit();
string result = sr.ReadToEnd();
sr.Close();
textBox1.Text = result;
На консоли, я получаю 8382 JGK, к примеру, но моя переменная результат всегда «».
У вас может возникнуть проблема с синхронизацией. Можете ли вы добавить поток сна после запуска 1-го процесса? Поскольку вы используете разные процессы, вы не уверены, что 1-й будет выполнен, когда вы пытаетесь прочитать вывод из него. – Gnqz
Да, могу, но сколько времени? Thread.sleep (5000), например? – Imrik
ReadToEnd считывает все символы с текущей позиции до конца потока, поэтому есть шанс, что вы на последней позиции, прежде чем начать чтение. – Vegz