[英]C# Problems with Reading Standard Output
這讓我難過。 因此,我正在用C#編寫一個程序來為Terraria服務器提供GUI前端。 我嘗試了幾種方法,但始終遇到相同的問題。 首先,我使用System.Diagnostic啟動該過程。 然后,我嘗試了幾件事,例如使用BeginOutputReadLine異步讀取控制台輸出或創建Background Worker來執行以下操作:
while (!terrariaProcess.StandardOutput.EndOfStream)
{
consoleOutput.Items.Add(terrariaProcess.StandardOutput.ReadLine());
}
但是輸出總是混亂不清。 示例應該是:(如果我使用cmd執行它的外觀)
Terraria Server v1.0.6.1
Choose World:
1 Test
n New World
d <number> Delete World
>>n
Choose size:
1 Small
2 Medium
3 Large
>>3
Enter World Name:
>>Hello World
但是我的程序將其讀取為:
Terraria Server v1.0.6.1
1 Test
n New World
d <number> Delete World
>>n
Choose World: Terraria Server v1.0.6.1
1 Small
2 Medium
3 Large
>>3
Choose size: Terraria Server v1.0.6.1
>>Hello World
無論我使用哪種方法,它都會執行此操作。 有人可以幫忙嗎? 我又是個白痴嗎?
編輯:應喬恩的要求,我做了一個小型控制台應用程序,試圖做同樣的事情。 我在從循環內檢查控制台輸入時遇到了一些麻煩,因此我只能測試第一個提示,但它似乎還是壞了。 我的代碼:
Process terrariaProcess;
terrariaProcess = new Process();
terrariaProcess.StartInfo.FileName = "TerrariaServer.exe";
terrariaProcess.StartInfo.UseShellExecute = false;
terrariaProcess.StartInfo.RedirectStandardInput = true;
terrariaProcess.StartInfo.RedirectStandardOutput = true;
terrariaProcess.StartInfo.CreateNoWindow = true;
terrariaProcess.Start();
while (!terrariaProcess.StandardOutput.EndOfStream)
{
Console.WriteLine(terrariaProcess.StandardOutput.ReadLine());
}
結果輸出:
Terraria Server v1.0.6.1
1 Test
n New World
d <number> Delete World
調用函數Console.Out.Flush();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.