|
我在一个循环里同时启动了多个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 |
|