/// <summary> /// Trata el final del proceso /// </summary> private void TreatEndProcess(AbstractProcessor objProcessor, EventArguments.EndProcessEventArgs objEventArgs) { // Elimina el procesador de la cola Queue.Remove(objProcessor); // Lanza el evento de fin de proceso if (EndProcess != null) EndProcess(objProcessor, objEventArgs); }
/// <summary> /// Añade una tarea a la cola y la ejecuta /// </summary> public void Process(AbstractProcessor objProcessor) { Task objTask; // Añade el procesador a la cola Queue.Add(objProcessor); // Asigna los manejador de eventos objProcessor.ActionProcess += (objSender, objEventArgs) => { if (ActionProcess != null) ActionProcess(objSender, objEventArgs); }; objProcessor.Progress += (objSender, objEventArgs) => { if (Progress != null) Progress(objSender, objEventArgs); }; objProcessor.ProgressAction += (objSender, objEventArgs) => { if (ProgressAction != null) ProgressAction(objSender, objEventArgs); }; objProcessor.EndProcess += (objSender, objEventArgs) => { TreatEndProcess(objSender as AbstractProcessor, objEventArgs); }; // Crea la tarea para la compilación en otro hilo objTask = new Task(() => objProcessor.Process()); // Arranca la tarea de generación try { objTask.Start(); } catch (Exception objException) { TreatEndProcess(objProcessor, new EventArguments.EndProcessEventArgs("Error al lanzar el proceso" + Environment.NewLine + objException.Message, new List<string> {objException.Message } )); } }
/// <summary> /// Trata el final del proceso /// </summary> private void TreatEndProcess(AbstractProcessor objProcessor, EventArguments.EndProcessEventArgs objEventArgs) { // Elimina el procesador de la cola Queue.Remove(objProcessor); // Lanza el evento de fin de proceso if (EndProcess != null) { EndProcess(objProcessor, objEventArgs); } }
/// <summary> /// Añade una tarea a la cola y la ejecuta /// </summary> public void Process(AbstractProcessor objProcessor) { Task objTask; // Añade el procesador a la cola Queue.Add(objProcessor); // Asigna los manejador de eventos objProcessor.ActionProcess += (objSender, objEventArgs) => { if (ActionProcess != null) { ActionProcess(objSender, objEventArgs); } }; objProcessor.Progress += (objSender, objEventArgs) => { if (Progress != null) { Progress(objSender, objEventArgs); } }; objProcessor.ProgressAction += (objSender, objEventArgs) => { if (ProgressAction != null) { ProgressAction(objSender, objEventArgs); } }; objProcessor.EndProcess += (objSender, objEventArgs) => { TreatEndProcess(objSender as AbstractProcessor, objEventArgs); }; // Crea la tarea para la compilación en otro hilo objTask = new Task(() => objProcessor.Process()); // Arranca la tarea de generación try { objTask.Start(); } catch (Exception objException) { TreatEndProcess(objProcessor, new EventArguments.EndProcessEventArgs("Error al lanzar el proceso" + Environment.NewLine + objException.Message, new List <string> { objException.Message })); } }