public void RunCommandLine(string typeStr, string app_name, string command_arguments) { process_info pi = new process_info(); count++; pi.idx = count; pi.desc = typeStr; pi.startTime = DateTime.Now; pi.m_process = new Process(); pi.m_process.StartInfo.FileName = app_name;// "ipconfig.exe"; pi.m_process.StartInfo.UseShellExecute = false; pi.m_process.StartInfo.RedirectStandardOutput = true; pi.m_process.StartInfo.Arguments = command_arguments; //m_ue_process = Process.Start(app_name, command_arguments); pi.m_process.Exited += process_Exited; pi.m_process.OutputDataReceived += process_ReceiveOutput; pi.m_process.Start(); pi.m_process.BeginOutputReadLine(); pi.SetState(1); pi.UpdateStayTime(); pi.itemIdx = listBox_Process.Items.Add(pi.ToDescString()); m_processList.Add(pi.idx, pi); //pi.m_process.WaitForExit(); //wait for exit now //m_process.Close(); //pi.desc = string.Format("{0} Deploy Scene. {1} {2:hh\\:mm\\:ss}", pi.idx, pi.state,pi.stayTime); Program.AddCommandLog(typeStr, app_name, command_arguments); }
public void Run() { foreach (var p in m_process_task) { p.Value.Run(); listBox_Process.Items[p.Value.itemIdx] = p.Value.ToDescString(); } bool isTaskBusy = false; foreach (var p in m_process_task) { if (!p.Value.isDone) { isTaskBusy = true; } } if (!isTaskBusy) { m_process_task.Clear(); } foreach (var p in m_processList.Keys.ToList()) { process_info pi = m_processList[p]; if (pi.state > 0) { pi.m_process.Refresh(); if (pi.m_process.HasExited) { pi.SetState(0); } //p.Value.UpdateStayTime(); listBox_Process.Items[pi.itemIdx] = pi.ToDescString(); } m_processList[p] = pi; } bool isIdle = true; foreach (var p in m_processList) { if (p.Value.state != 0) { isIdle = false; } } if (isIdle) { m_processList.Clear(); } //while (processState > 0) //{ // //Program.AddLog("..Refresh.." + DateTime.Now.ToString()); // m_process.Refresh(); // //m_process.CancelOutputRead(); // //m_process.BeginOutputReadLine(); // if (m_process.HasExited) // { // processState = 0; // } //} //Program.AddLog("Command Line Process has exited."); }