等待命令完成在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读取.这只有在命令完成后进程退出时才有效. (请注意,您必须读取输出,否则可能会填满输出缓冲区,并基本阻止该过程.)

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

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

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

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...