Process退出事件问题

.Net技术 码拜 10年前 (2015-05-10) 1731次浏览 0个评论

我在一个循环里同时启动了多个Process,每个都会传入相应的参数(这些参数是放在一个string数组里的),执行完后会响应退出事件,我想在这个事件里把相应的传入的参数从原来的string数组里删除了,但是我如何知道这个退出事件是哪个Process的退出事件。

 
        public static VCData m_vc_data = new VCData();
        static MySqlCon m_db_con = new MySqlCon();
        static List<VCTableData> m_db_data = new List<VCTableData>();
        int m_process_num = 0;
        public void ConVersionVideo(string srcVideoFile, string dstVideoFile) 
        {
            ExtFfmpeg("-i" + srcVideoFile + m_vc_data.ConverterParm_vid + dstVideoFile);
        }
        public void GetVideoPicture(string srcVideoFile, string dstPictureFile) 
        {
            ExtFfmpeg("-i" + srcVideoFile + m_vc_data.ConverterParm_vid + dstPictureFile);
        }

        public void ExtFfmpeg(string arguments) 
        {
            Process pro = new Process();
            pro.StartInfo.FileName = "ffmpeg.exe";
            pro.StartInfo.Arguments = arguments;
            pro.StartInfo.CreateNoWindow = true;
            pro.EnableRaisingEvents = true;
            pro.Exited += new EventHandler(ProcessExited);
            pro.Start();
        }

        public void Start() 
        {
            while(m_process_num <= m_vc_data.TaskCount) 
            {
                foreach(VCTableData td in m_db_data)
                {
                    if(td.converted == 0)
                    {
                        ConVersionVideo(m_vc_data.SrcFilePath + td.name, 
                            m_vc_data.prefixpath + td.path + td.convertname);
                        GetVideoPicture(m_vc_data.SrcFilePath + td.name, 
                            m_vc_data.prefixpath + td.path + td.pic);
                        ++m_process_num;
                    }
                }
            }
        }
        public void ProcessExited(object sender, System.EventArgs e) {
            Thread.Sleep((int)(m_vc_data.finishTaskCycleSec*1000));
            这里我想删除执行过的参数,但是不知道要删哪个参数
        }
问题已经解决,来人拿分!
40分
删除最后写入的不行吗?【自动拿分回复】

执行一个删一个不好么?

引用 3 楼 icdbow 的回复:

执行一个删一个不好么?

你要删除的和执行的要对应的,要多个任务同时进行的!

引用 2 楼 BenBenBears 的回复:

删除最后写入的不行吗?【自动拿分回复】

当然不行,因为你同时启动了多个进程,不一定先启动的进程先结束的!

如何解决的? 感觉可以用这个 System.EventArgs e参数来传递 但是不知道在调用的时候从哪放参数进去
在exit 里面 获取当前触发退去操作的进程
process p = (process)sender

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Process退出事件问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!