2012-04-15 72 views
4

我正在通過Process.Start()執行程序。我嘗試重定向輸出來獲取線條。閱讀標準輸出的最後一行

但現在,我只需要最後一行。

有沒有辦法只讀最後一行或者我還需要整個redirectStandaroutput = false;等?

有沒有更簡單的方法?

如果我得到process.Redirect()去,我想下面就MSDN和其他與outputdatareceived事件源的例子,但我只輸出被在最後寫入到控制檯,而不是異步。

+3

不,沒有簡單的方法。您需要讀取整個輸出並丟棄除最後一行之外的所有內容。 – Servy 2012-04-15 22:56:14

+0

謝謝Servy。我會閱讀完整的操作。 – user393148 2012-04-16 02:12:48

+0

或者您可以使用StreamReader.ReadLine() - >逐行閱讀 - > http://www.gamedev.net/topic/521470-c-launching-another-process-and-capturing-stdout/ – blez 2012-04-28 12:12:51

回答

1

一旦您使用process.Start()讀取我知道的輸出的唯一方法是使用.RedirectStandardInput = true;。 而作爲標準輸出是一個流對象,最後一行只能通過讀取整個流來讀取。

順便說一句proc.StandardOutput.ReadToEnd()會掛起你的線程直到進程退出,如果你在閱讀過程中得到任何提示 - 你的應用程序將掛斷。