private void Process() { TaskFOCA task; while (true) { System.Threading.Thread.Sleep(50); for (int iTaskRunning = 0; iTaskRunning < lstRunningTasks.Count; iTaskRunning++) { TaskFOCA taskRunning = lstRunningTasks[iTaskRunning]; if (!taskRunning.IsAlive()) { lstRunningTasks.Remove(taskRunning); if (OnTaskFinished != null) { OnTaskFinished(taskRunning, null); } } } if (lstRunningTasks.Count >= Program.cfgCurrent.NumberOfTasks) { continue; } for (int iTask = lstRunningTasks.Count; iTask < Program.cfgCurrent.NumberOfTasks; iTask++) { if (lstTasks.Count == 0) { continue; } task = lstTasks.First(); lstTasks.Remove(task); lstRunningTasks.Add(task); task.Start(); if (OnTaskStarting != null) { OnTaskStarting(task, null); } } } }
public void AddTask(TaskFOCA task) { lstTasks.Add(task); task.id = idCount; try { idCount++; } catch { idCount = 0; } if (OnTaskAdded != null) { OnTaskAdded(task, null); } }