4
我從我的C#應用程序中使用System.Diagnostics程序類執行批處理文件,更新我的GUI與沿途的輸出,但只要我的批處理文件執行大批量文件是多餘的一定數量的行,該過程只是掛起。線的確切量似乎有所不同,但我已經能夠用一個簡單的批處理文件,打印「凱蒂貓」 316次重現:麻煩從C#
@echo off
echo Hello Kitty
echo Hello Kitty
等
如果刪除了第316行,批處理文件執行得很好,表單應用程序按預期運行,但是更多的行會導致進程無限期掛起,甚至不會生成前300個hello kitty中的一個。
這裏是我執行批處理文件代碼:
process = new System.Diagnostics.Process();
process.StartInfo.FileName = batchName;
process.StartInfo.Arguments = " < nul";
process.StartInfo.CreateNoWindow = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.UseShellExecute = false;
process.Start();
與其他地方的這些聲明:
protected Process process;
protected StreamReader output;
我的主要形式做這樣的事情(簡化了一點):
string output;
while (!proc.Process.HasExited)
{
proc.Process.WaitForExit(200);
if (proc.Process.HasExited)
{
output = proc.Output.ReadToEnd();
rtbStatus.AppendText(output);
}
Application.DoEvents();
}
我不明白它爲什麼這樣做,沒有任何例子,我在網上找到任何提及批量文件的大小限制。請指教。
+1,「Hello Kitty \ r \ n」* 315 = 4095B,僅次於4096B的限制。 – 2012-07-20 11:36:52
謝謝!我刪除了if語句,現在它工作。 – Stephan 2012-07-20 12:23:12