我有一個問題,我需要執行一個控制檯程序,我必須在我的程序中顯示該控制檯的輸出信息。我有一個名爲「result」的字符串變量,必須存儲該信息,但始終爲空,我不知道爲什麼。誰能幫我?我把下面的代碼:從外部程序/控制檯讀取
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,例如,但我的結果變量始終是「」。
您可能有同步問題。您可以在開始第一個過程後添加線程睡眠嗎?當你正在使用不同的進程時,你不確定當你試圖讀取它的輸出時,第一個將會完成。 – Gnqz
是的,我可以,但多少時間? Thread.sleep(5000),例如? – Imrik
ReadToEnd將當前位置中的所有字符讀取到流的末尾,因此您有可能在開始閱讀之前處於最後位置。 – Vegz