2008-10-11 25 views

Trả lời

17
Process myProcess = new Process(); 
ProcessStartInfo myProcessStartInfo = new ProcessStartInfo("YOUPROGRAM_CONSOLE.exe"); 
myProcessStartInfo.UseShellExecute = false; 
myProcessStartInfo.RedirectStandardOutput = true; 
myProcess.StartInfo = myProcessStartInfo; 
myProcess.Start(); 

StreamReader myStreamReader = myProcess.StandardOutput; 
string myString = myStreamReader.ReadLine(); 
Console.WriteLine(myString); 
myProcess.Close(); 

Nguồn: MSDN

được sửa đổi: Nếu bạn cần để có được những thông báo lỗi, bạn sẽ cần phải sử dụng hoạt động async. Bạn có thể sử dụng các hoạt động đọc không đồng bộ để tránh những phụ thuộc này và tiềm năng bế tắc của chúng. Cách khác, bạn có thể tránh tình trạng bế tắc bằng cách tạo hai luồng và đọc đầu ra của mỗi luồng trên một luồng riêng biệt.

+1

Bạn cũng sẽ muốn bật "RedirectStandardError" và đọc luồng đó, Trong trường hợp quá trình phụ của bạn tạo thông báo lỗi. – gimel

+0

Tôi đã thêm một số thông tin. Trong MSDN nó nói rằng nó đòi hỏi nhiều chủ đề để tránh bế tắc. –

+0

Nếu bạn thực sự muốn xuất ra bàn điều khiển, bạn có thể sử dụng 'Console.SetIn (myProcess.StandardOutput);' thay cho đối tượng StreamReader-Object bổ sung. –

Các vấn đề liên quan