winform运行后台运行cmd并实时输出运行信息
private void ShowCmdOutPut(string cmdPath)
{
try
{
Process proc = new Process();
proc.StartInfo.FileName = cmdPath;
//proc.StartInfo.Arguments = string.Format("10");//this is argument
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardInput = true; //标准输入
proc.StartInfo.RedirectStandardOutput = true; //标准输出
proc.StartInfo.CreateNoWindow = true;
proc.Start();
proc.OutputDataReceived += new DataReceivedEventHandler(OutputHandler);
proc.BeginOutputReadLine();
proc.WaitForExit();
proc.Close();
}
catch (Exception ex)
{
this.logBox.Text = string.Format("Exception Occurred :{0},{1}", ex.Message, ex.StackTrace.ToString());
MessageBox.Show("出错了,请查看运行日志!");
}
}
private void OutputHandler(object sender, DataReceivedEventArgs outLine)
{
if (!String.IsNullOrEmpty(outLine.Data))
{
StringBuilder sb = new StringBuilder(this.logBox.Text);
this.logBox.Text = sb.AppendLine(outLine.Data).ToString();
this.logBox.SelectionStart = this.logBox.Text.Length;
this.logBox.ScrollToCaret();
}
}
cmdPath为cmd目录,logbox为富文本框。