我開始運行控制檯應用程序的C#應用程序中的一個進程。我重定向了標準輸入和輸出,並且能夠通過StandardOutput.ReadLine()讀取幾行。我確信我已正確配置了ProcessStartInfo。StandardOutput.EndOfStream掛起
控制檯應用程序在啓動時會輸出幾行(以「標記」行結尾),然後等待輸入。接收到輸入後,再次輸出幾行(以「標記」行結束),依此類推。我的意圖是從它讀取直到我收到「標記」行,在這一點上,我知道發送適當的輸入字符串。
我的問題是,經過多次迭代,程序掛起。暫停調試器往往會將掛起放在對StandardOutput.EndOfStream的調用中。這是在下面的測試代碼的情況:
while (!mProcess.StandardOutput.EndOfStream) // Program hangs here.
{
Console.WriteLine(mProcess.StandardOutput.ReadLine());
}
當我測試的「標記」行了,我得到同樣的,如果我試圖讀線後訪問StandardOutput.EndOfStream掛的:
string line = "";
while (!isMarker(line))
{
line = mProcess.StandardOutput.ReadLine();
}
bool eos = mProcess.StandardOutput.EndOfStream; // Program hangs here.
我會怎麼做,導致此屬性執行如此可怕?
否;目的是與控制檯應用程序進行交互。 – TreDubZedd 2010-05-04 17:33:39