/// <summary> /// Añade una tarea a la cola y la ejecuta /// </summary> public void Process(AbstractTask processor) { Task task; // Añade el procesador a la cola Queue.Add(processor); // Asigna los manejador de eventos processor.ActionProcess += (sender, evntArgs) => ActionProcess?.Invoke(sender, evntArgs); processor.Progress += (sender, evntArgs) => Progress?.Invoke(sender, evntArgs); processor.ProgressAction += (sender, evntArgs) => ProgressAction?.Invoke(sender, evntArgs); processor.EndProcess += (sender, evntArgs) => TreatEndProcess(sender as AbstractTask, evntArgs); // Crea la tarea para la compilación en otro hilo task = new Task(() => processor.Process()); // Arranca la tarea de generación try { task.Start(); } catch (Exception exception) { TreatEndProcess(processor, new EventArguments.EndProcessEventArgs($"Error al lanzar el proceso{Environment.NewLine}{exception.Message}", new List <string> { exception.Message })); } }
/// <summary> /// Lanza un evento /// </summary> protected void RaiseEvent(EventArguments.ActionEventArgs.ActionType action, string message) { ActionProcess?.Invoke(this, new EventArguments.ActionEventArgs(action, Source, message)); }