Example #1
0
        /// <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));
 }