예제 #1
0
        public static Tiket <TipoTrabajo> AñadirFaena(TrabajaEventHandler <TipoTrabajo> metodo, TipoTrabajo trabajo, Tiket <TipoTrabajo> .PrioridadEnum prioridad)
        {
            Tiket <TipoTrabajo> faena = new Tiket <TipoTrabajo>(metodo, trabajo, prioridad);

            AñadirFaena(faena);
            return(faena);
        }
예제 #2
0
 public static void AñadirFaena(Tiket <TipoTrabajo> tiket)
 {
     tiket.DentroPool = true;
     faenasEstaticas.Add(tiket);
     if (estaOrdenado)
     {
         faenasEstaticas.Sort();
     }
 }
예제 #3
0
        public int CompareTo(Tiket <TipoTrabajo> other)
        {
            int compareTo = prioridad.CompareTo(other.prioridad);

            if (compareTo == 0)
            {
                return(PosicionId.CompareTo(other.PosicionId));
            }
            else
            {
                return(compareTo);
            }
        }
예제 #4
0
 public static void QuitaOAbortaFaena(Tiket <TipoTrabajo> faenaHaAbortar)
 {
     if (feanasHaciendose.ContainsKey(faenaHaAbortar.IdUnico))
     {
         hilosFaenas.Remove(feanasHaciendose[faenaHaAbortar.IdUnico].Value.Key.Name);
         try {
             feanasHaciendose[faenaHaAbortar.IdUnico].Value.Key.Abort();
         } catch {
         }
         feanasHaciendose.Remove(faenaHaAbortar.IdUnico);
         faenaHaAbortar.DentroPool = false;
     }
     else if (faenasEstaticas.Contains(faenaHaAbortar))
     {
         faenasEstaticas.Remove(faenaHaAbortar);
         faenaHaAbortar.DentroPool = false;
     }
 }
예제 #5
0
        static void HazFaena()
        {
            Tiket <TipoTrabajo> tiket = null;

            while (faenasEstaticas.Count > 0)
            {
                tiket = faenasEstaticas.Pop();
                if (tiket != null)
                {
                    feanasHaciendose.Add(tiket.IdUnico, new KeyValuePair <Thread, Tiket <TipoTrabajo> >(Thread.CurrentThread, tiket));
                    tiket.EstadoFaena = Tiket <TipoTrabajo> .EstadoFaenaEnum.Haciendose;
                    try {
                        tiket.HazFaena();
                    } catch (Exception ex) {
                        tiket.Excepcion(ex);
                    }
                    QuitarFaena(tiket);
                    feanasHaciendose.Remove(tiket.IdUnico);
                    tiket.EstadoFaena = Tiket <TipoTrabajo> .EstadoFaenaEnum.Acabado;
                    tiket.FaenaHechaEvent();
                }
            }
            hilosFaenas.Remove(Thread.CurrentThread.Name);
        }
예제 #6
0
 public static void QuitarFaena(Tiket <TipoTrabajo> tiketFaena)
 {
     faenasEstaticas.Remove(tiketFaena);
     tiketFaena.DentroPool = false;
 }