2012-05-01 84 views
1

我有C#控制檯應用程序,它運行另一個Borland C控制檯應用程序。它工作正常。 但是,當我將第一個應用程序重新制作爲WinForm應用程序後,我無法從Borland C控制檯應用程序獲取輸出。我將控制檯應用程序重新制作成WinForm應用程序。我現在無法從另一個控制檯應用程序獲得輸出

代碼是在這裏:

Process p = new Process();  
p.StartInfo.CreateNoWindow = true;  
p.StartInfo.UseShellExecute = false;  
p.StartInfo.RedirectStandardError = true;  
p.StartInfo.RedirectStandardOutput = true;  
p.StartInfo.FileName = name1;  
p.Start();  
StreamReader sr = p.StandardOutput;  
progOutput = sr.ReadToEnd();  
//progOutput = p.StandardOutput.ReadToEnd();  
p.WaitForExit();  

字符串progOutput是空的。我得到同樣的結果,如果我用線 progOutput = p.StandardOutput.ReadToEnd();而不是StreamReader

用Borland C控制檯應用程序真正開始,並創造了它正常的輸出文件。
但它的輸出消失在WinForm應用程序中。 正如我所說的這段代碼在C#控制檯應用程序中工作正常, 但現在不適用於C#Windows窗體應用程序。

順便說一句,如果我在WinForm應用程序中運行C#控制檯應用程序,輸出沒問題。 與Borland C輸出有什麼不同? 但是,當我在C#控制檯應用程序中運行Borland C應用程序時,它工作正常。 所以我很困惑。

感謝

+0

StandardError有什麼? – banging

+0

StandardError也爲空 – user993354

回答

0

檢查

var errorOut = p.StandardError.ReadToEnd(); 

你可能會得到輸出StandardError的。您可以找到許多與此相關的問題,我們期望StandardOutput的輸出,但它會重定向到StandardError。

+0

StandardError也爲空。 – user993354

1

在某些情況下,我發現有利於推出可執行間接像這樣..

p.StartInfo.FileName = "cmd"; 
p.StartInfo.Arguments = "/C " + name1; 

..especially當具有輸出重定向的問題。但是你說它是作爲一個控制檯應用程序?!

+0

我有這個相同的問題!這爲我修好了! – IDWMaster

+0

我無法理解你是如何解決問題的。 – user993354

+0

用上面2行代替'p.StartInfo.FileName = name1;'告訴我們結果.. – banging

相關問題