加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

等待命令完成在C#

发布时间:2020-12-15 06:45:04 所属栏目:百科 来源:网络整理
导读:我是C#的新手,试图开发一个内部打开命令提示符并在这里执行一些命令的小应用程序.这是我到目前为止所做的 m_command = new Process(); m_command.StartInfo.FileName = @"cmd.exe"; m_command.StartInfo.UseShellExecute = false; m_command.StartInfo.Windo
我是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读取.这只有在命令完成后进程退出时才有效. (请注意,您必须读取输出,否则可能会填满输出缓冲区,并基本阻止该过程.)

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读