Process.Exited 事件未被调用

发布于 2024-08-12 15:25:37 字数 555 浏览 3 评论 0原文

我有以下代码片段可以调用命令行:

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();

奇怪的是,当 [abc] 是一个小 pdf 文件(8kb)时 p_Exited 被调用。但是当它是一个大的 pdf 文件(120kb)时,它永远不会被调用。有什么线索吗?

谢谢,

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,

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

绝情姑娘 2024-08-19 15:25:37

当标准输出被重定向时,您需要使用输出流:

p.Start();   
p.StandardOutput.ReadToEnd();
p.WaitForExit();

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

p.Start();   
p.StandardOutput.ReadToEnd();
p.WaitForExit();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文