public void RunCommandLine_Task(string typeStr, string app_name, string command_arguments)
        {
            ProcessTask pt = new ProcessTask();

            count++;
            pt.idx       = count;
            pt.desc      = typeStr;
            pt.startTime = DateTime.Now;
            pt.AddTask(typeStr, app_name, command_arguments);
            pt.itemIdx = 0;// listBox_Process.Items.Add(pt.ToDescString());
            m_process_task.Add(pt.idx, pt);

            Program.AddCommandLog(typeStr, app_name, command_arguments);
        }
        public int RunCommandLine_MultiTask(process_task[] tasks)
        {
            ProcessTask pt = new ProcessTask();

            count++;
            pt.idx       = count;
            pt.startTime = DateTime.Now;
            foreach (var t in tasks)
            {
                pt.AddTask(t.task_desc, t.app_name, t.app_args);
                string typeStr = "MultiTask-";
                typeStr += t.task_desc;
                Program.AddCommandLog(typeStr, t.app_name, t.app_args);
            }
            pt.itemIdx = 0;// listBox_Process.Items.Add(pt.ToDescString());
            m_process_task.Add(pt.idx, pt);
            return(pt.idx);
        }
        public void Run()
        {
            foreach (var p in m_process_task.Keys.ToList())
            {
                ProcessTask pt = m_process_task[p];
                pt.Run();
                m_process_task[p] = pt;
                //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.");
        }