Tôi đang viết một ứng dụng winform C# bắt đầu quá trình thứ hai để thực hiện các lệnh shell như "dir" và "ping". Tôi chuyển hướng đầu ra của quá trình thứ hai để ứng dụng của tôi có thể nhận được kết quả lệnh. Nó gần như hoạt động tốt.C#: lấy dòng kết quả lệnh shell bên ngoài theo dòng
Vấn đề duy nhất là ứng dụng winform của tôi nhận được kết quả đầu ra của dòng lệnh thay vì từng dòng một. Ví dụ, nó phải đợi lệnh "ping" bên ngoài kết thúc (mất nhiều giây hoặc lâu hơn) và sau đó nhận được toàn bộ đầu ra (nhiều dòng) cùng một lúc.
Điều tôi muốn là ứng dụng nhận được kết quả đầu ra cmdline theo thời gian thực, tức là theo các dòng không theo khối. Điều này có thể thực hiện được không?
Tôi đang sử dụng mã này để đọc kết quả: while (! (Result = proc.StandardOutput.ReadLine()) = null)
Nhưng nó không làm việc theo cách tôi mong đợi. Cảm ơn trước.
EDIT: đây là mã Tôi đang sử dụng:
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.
[có thể trùng lặp] (http://stackoverflow.com/questions/ 415620/redirect-console-output-to-textbox-in-riêng-chương trình-c) –
Hiển thị mã bạn đã thử sẽ hữu ích. –