微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

等待命令完成在C#

我是C#的新手,试图开发一个内部打开命令提示符并在这里执行一些命令的小应用程序.这是我到目前为止所做的
m_command = new Process();
    m_command.StartInfo.FileName = @"cmd.exe";
    m_command.StartInfo.UseShellExecute = false;
    m_command.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
    m_command.StartInfo.CreateNowindow = true;
    m_command.StartInfo.RedirectStandardInput = true;
    m_command.StartInfo.RedirectStandardOutput = true;

    m_command.Start();

    m_reader = m_command.StandardOutput;
    m_writer = m_command.StandardInput;

    m_writer.WriteLine("Somecommand"); //execute some command

如您所见,我已经重定向了输入和输出.我的问题是如何同步执行“一些命令”,即我想使用重定向输出读取我的命令的结果.为此,我必须等到我使用WriteLine调用的命令完成.我怎么做?

解决方法

这真的取决于命令将做什么.您可以等待进程退出Process.WaitForExit,同时从另一个线程中的m_reader或OutputDataReceived读取.这只有在命令完成后进程退出时才有效. (请注意,您必须读取输出,否则可能会填满输出缓冲区,并基本阻止该过程.)

一个选项是如果您在命令完成时得到一定的输出位,例如下一个命令提示符.麻烦的是,如果你的命令碰巧输出相同的事情,你会错了.

感觉像启动一个命令提示符,因为这不是一个伟大的方法.任何理由你不会每次都创建一个单独的过程?

一个选择:如果您可以通过命令行了解刚刚启动的进程,则可以将其作为进程找到并等待退出.这很棘手 – 我真的会尝试重新设计您的解决方案.

原文地址:https://www.jb51.cc/csharp/94777.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐