我在一个循环里同时启动了多个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分 |
删除最后写入的不行吗?【自动拿分回复】
|
执行一个删一个不好么? |
|
你要删除的和执行的要对应的,要多个任务同时进行的! |
|
当然不行,因为你同时启动了多个进程,不一定先启动的进程先结束的! |
|
如何解决的? 感觉可以用这个 System.EventArgs e参数来传递 但是不知道在调用的时候从哪放参数进去
|
|
在exit 里面 获取当前触发退去操作的进程
process p = (process)sender |