2015-06-14 179 views
0

我正在寫一個與國際象棋引擎交流的小型控制檯應用程序。我正在設置流程類,我可以設置輸入,但我無法捕獲輸出。有了這個啓動參數startInfo.RedirectStandardInput = true; startInfo.RedirectStandardOutput = false;輸入是可能的。當我設置startInfo.RedirectStandardOutput = true;時,只有空的控制檯窗口正在啓動,無法輸入。我看到這個主題Catch console input-output,它被標記爲接受,但它不適合我。如何爲一個進程設置輸入和捕獲輸出?

現在我的計劃(我怎麼會在這裏可以閱讀輸出的最後一行):

var position = File.ReadAllText("C:\\pos.txt"); 

    ProcessStartInfo startInfo = new ProcessStartInfo(); 
    startInfo.RedirectStandardInput = true; 
    startInfo.RedirectStandardOutput = false; 
    startInfo.UseShellExecute = false; 
    startInfo.ErrorDialog = false; 
    startInfo.FileName = "C:\\engine.exe"; 

    Process process = new Process(); 
    process.StartInfo = startInfo; 
    process.Start(); 

    process.StandardInput.WriteLine("position startpos moves " + position); 
    process.StandardInput.WriteLine("go"); 
    System.Threading.Thread.Sleep(500); 
    process.StandardInput.WriteLine("stop"); 

回答

0

我,剛纔已經在你前面的問題回答了這一點。只需添加這些行process.StandardInput.WriteLine("stop");

string lastLine = null; 
while (!process.StandardOutput.EndOfStream) 
{ 
    lastLine = process.StandardOutput.ReadLine(); 
} 

//do what you want here with lastLine; 
+0

我想這之後,我得到'「System.InvalidOperationException」類型的未處理的異常出現在System.dll中 其他信息:StandardOut尚未被重定向或過程不是招」 ()線開始。 –

+0

你應該將'startInfo.RedirectStandardOutput'設置爲true! – dotctor

+0

您應該在downvoting之前閱讀我的問題,然後整個過程不會開始: –