Process.Exited event is not be called

2019-01-29 00:04发布

I have the following code snippet to call into command line:

p = new Process();
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = "cmd.exe";
psi.Arguments = "/C " + "type " + “[abc].pdf”;

psi.UseShellExecute = false;
psi.RedirectStandardInput = false;
psi.RedirectStandardOutput = true;
psi.CreateNoWindow = true;

p.StartInfo = psi;
p.EnableRaisingEvents = true;
p.Exited += new EventHandler(p_Exited);
p.Start();   
p.WaitForExit();

Strangely, When [abc] is a small pdf file(8kb) p_Exited is called. But when it's a large pdf file(120kb) it is never called. Any clues?

Thanks,

1条回答
对你真心纯属浪费
2楼-- · 2019-01-29 00:46

You need to consume the output stream when the standard output has been redirected:

p.Start();   
p.StandardOutput.ReadToEnd();
p.WaitForExit();
查看更多
登录 后发表回答