2008-10-11 15 views

cevap

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(); 

Kaynak: MSDN

Düzenlendi: Eğer zaman uyumsuz işlem kullanmanız gerekecektir Hata mesajı almak gerekiyorsa. Bu bağımlılıkları ve kilitlenme potansiyelini önlemek için asenkron okuma işlemlerini kullanabilirsiniz. Alternatif olarak, iki iş parçacığı oluşturarak ve her bir akışın çıkışını ayrı bir iş parçacığı üzerinde okuyarak kilitlenme durumundan kurtulabilirsiniz.

+1

"RedirectStandardError" özelliğini de etkinleştirmek ve bu akışı okumanız için Alt işleminizin hata iletileri oluşturması durumunda. – gimel

+0

Bazı bilgileri ekledim. MSDN'de kilitlenmeyi önlemek için birden çok iş parçacığı gerektirdiğini söylüyor. –

+0

Konsolda gerçekten çıktı almak isterseniz, ekstra StreamReader-Object yerine 'Console.SetIn (myProcess.StandardOutput);' kullanabilirsiniz. –

İlgili konular