轉自:http://bbs.csdn.net/topics/190051920#new_post
this.process = new Process();
this.process.StartInfo.CreateNoWindow = true;
this.process.StartInfo.UseShellExecute = false;
this.process.StartInfo.FileName = fileName;
this.process.StartInfo.RedirectStandardError = false;
this.process.StartInfo.RedirectStandardInput = true;
this.process.StartInfo.RedirectStandardOutput = true;
this.process.Start();
StreamWriter sw = this.process.StandardInput;
sw.Write(test);
sw.Close();
string output = this.process.StandardOutput.ReadToEnd();
this.process.WaitForExit();
this.process.Close();
中間的 test、fileName 等變數是我先前定義好的
現在有個問題是:
當我的輸出在1000行的時候是完全正常的
但當輸出的行為2000或以上時就阻塞了
也就是當輸入過多時
string output = this.process.StandardOutput.ReadToEnd();
程式就會在上面一行阻塞
請大家忙幫
給一個解決方案
不勝感激
補充一下
是輸出過多時
就是我知道輸出會比較多時(一般是1000行以上)
就會阻塞
我也想過可能是輸入太多
我把
this.process.StartInfo.RedirectStandardOutput = true;
該成
this.process.StartInfo.RedirectStandardOutput = false;
時
無論輸入多少測試資料
程式都正常
是不是StandardOutput有大小限制
如果解決
謝謝
這些我都明白
我說了在資料少的時候運行是正常的
不是完全沒有運行
現在還發現一個問題
如果輸入超過好幾千行
也會出現阻塞
謝謝阿
(再次說下,我已經成功運行了,就是資料輸入或輸出過多時出現了問題,期待。。。。。。)
緩衝區確實是有大小限制的.而且如果緩衝區滿了的話,系統會阻塞等待緩衝區排出適當的資料.
解決辦法就是在緩衝區還沒有滿之前,將緩衝區中的資料輸出到某個地方.
另外,一個workaround的方法就是通過重新導向符號(>, >>這樣的符號,通過調用批次檔來替代.