我正在啓動一個控制檯應用程序,但是當我重定向標準輸出時,我總是一無所得!process.standardoutput.ReadToEnd()總是空的?
當我不重定向它,並設置CreateNoWindow
到false
,我在控制檯中正確地看到的一切,但是當我把它重定向,StandardOutput.ReadToEnd()
總是返回一個空字符串。
Process cproc = new Process();
cproc.StartInfo.CreateNoWindow = true;
cproc.StartInfo.FileName = Dest;
cproc.StartInfo.RedirectStandardOutput = true;
cproc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
cproc.StartInfo.UseShellExecute = false;
cproc.EnableRaisingEvents = true;
cproc.Start();
cproc.Exited += new EventHandler(cproc_Exited);
while(!stop)
{
result += cproc.StandardOutput.ReadToEnd();
}
的EventHandler cproc_exited
只是設置stop
到true
。有人可以解釋爲什麼result
總是string.Empty
?
。 我得到了一個死鎖 – alex 2010-01-06 11:33:15
heey,它的工作原理!看起來像我的朋友(誰做了控制檯程序)搞砸了!它將所有內容寫入錯誤流!我得和他談談,也許他可以解決這個問題。感謝您的快速回答!你從我的電腦前幾小時和幾個小時的時間裏救了我,試圖尋找一個愚蠢的錯誤:) – alex 2010-01-06 11:44:45
@alex:取出while循環 - 它不應該在那裏。理想情況下,使用不同的線程 - 一個從'StandardOutput'讀取,一個從'StandardError'讀取。 – 2010-01-06 11:59:51