我正在編寫一個C#winform應用程序,該應用程序啓動第二個進程來執行shell命令,如「dir」和「ping」。我重定向第二個進程的輸出,以便我的應用程序可以接收命令結果。它大致工作正常。C#:按行獲取外部shell命令結果
唯一的問題是我的winform應用程序接收命令行輸出作爲一個整體而不是逐行。例如,它必須等待外部「ping」命令完成(需要幾秒鐘或更長時間),然後一次接收整個輸出(多行)。
我想要的是應用程序實時接收cmdline輸出,即通過行而不是塊。這是可行的嗎?
我使用此代碼讀取輸出: 而(!(結果= proc.StandardOutput.ReadLine())= NULL)
但它不工作,我所期望的方式。 在此先感謝。
編輯:這是我使用的代碼:使用while ((result = proc.StandardOutput.ReadLine()) != null)
你應該使用的
System.Diagnostics.ProcessStartInfo procStartInfo = new
System.Diagnostics.ProcessStartInfo("cmd", "/c " + command);
procStartInfo.WindowStyle = ProcessWindowStyle.Hidden;
// The following commands are needed to redirect the standard output.
procStartInfo.RedirectStandardOutput = true;
procStartInfo.UseShellExecute = false;
procStartInfo.CreateNoWindow = true;
// Now we create a process, assign its ProcessStartInfo and start it
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = procStartInfo;
proc.Start();
// Get the output into a string
string result;
try {
while ((result = proc.StandardOutput.ReadLine()) != null)
{
AppendRtfText(result+"\n", Brushes.Black);
}
} // here I expect it to update the text box line by line in real time
// but it does not.
[可能重複(http://stackoverflow.com/questions/ 415620/redirect-console-output-to-textbox-in-separate-program-c) –
顯示你嘗試的代碼將會很有幫助。 –