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