public bool AsyncStart(string CmdName, string CmdArgv, EndProcDelegate epd = null, bool bIsShow = true) { if (IdleCheck() == false) { return(false); } this.bIsShow = bIsShow; m_Thrd = new Thread(delegate() { RunProc(CmdName, CmdArgv, epd); }); m_Thrd.Start(); return(true); }
public bool AsyncStart(string CmdName, string CmdArgv, EndProcDelegate epd = null, bool bIsShow = true) { if (IdleCheck() == false) { return false; } this.bIsShow = bIsShow; m_Thrd = new Thread(delegate() { RunProc(CmdName, CmdArgv, epd); }); m_Thrd.Start(); return true; }
private void RunProc(string CmdName, string CmdArgv, EndProcDelegate epd) { m_Proc = new Process(); m_Proc.StartInfo.FileName = CmdName; m_Proc.StartInfo.Arguments = CmdArgv; m_Proc.StartInfo.CreateNoWindow = true; m_Proc.StartInfo.UseShellExecute = false; m_Proc.StartInfo.RedirectStandardInput = true; //标准输入重定向 m_Proc.StartInfo.RedirectStandardOutput = true; //标准输出重定向 m_Proc.StartInfo.RedirectStandardError = true; m_Proc.OutputDataReceived += new DataReceivedEventHandler(OutputRecv); m_Proc.ErrorDataReceived += new DataReceivedEventHandler(ErrorRecv); m_Proc.Start(); bIsRun = true; m_lb_Status.Text = "进程状态: 运行中"; m_txt_Log.Clear(); m_RetOutputMsg = new StringBuilder(); m_Proc.BeginErrorReadLine(); m_Proc.BeginOutputReadLine(); m_Proc.WaitForExit(); int ExitCode = m_Proc.ExitCode; m_Proc.Close(); bIsRun = false; if (epd != null) { epd(m_RetOutputMsg.ToString(), ExitCode); } m_lb_Status.Text = "进程状态: 准备中"; }
private void RunProc(string CmdName, string CmdArgv, EndProcDelegate epd) { m_Proc = new Process(); m_Proc.StartInfo.FileName = CmdName; m_Proc.StartInfo.Arguments = CmdArgv; m_Proc.StartInfo.CreateNoWindow = true; m_Proc.StartInfo.UseShellExecute = false; m_Proc.StartInfo.RedirectStandardInput = true;//标准输入重定向 m_Proc.StartInfo.RedirectStandardOutput = true;//标准输出重定向 m_Proc.StartInfo.RedirectStandardError = true; m_Proc.OutputDataReceived += new DataReceivedEventHandler(OutputRecv); m_Proc.ErrorDataReceived += new DataReceivedEventHandler(ErrorRecv); m_Proc.Start(); bIsRun = true; m_lb_Status.Text = "Proc Status: Running"; m_txt_Log.Clear(); m_RetOutputMsg = new StringBuilder(); m_Proc.BeginErrorReadLine(); m_Proc.BeginOutputReadLine(); m_Proc.WaitForExit(); int ExitCode = m_Proc.ExitCode; m_Proc.Close(); bIsRun = false; if (epd != null) { epd(m_RetOutputMsg.ToString(), ExitCode); } m_lb_Status.Text = "Proc Status: Ready"; }