/// <summary> /// Establece las cosas a trabajar /// </summary> protected override void OnStart(string[] args) { eventLog1.WriteEntry("ServiciosSiapSK Service OnStart"); try { var configuracionAccionesPL = new ConfiguracionAccionesPL(); tareas = configuracionAccionesPL.ObtenerTodos(); } catch (Exception ex) { var srvcController = new ServiceController(ServiceName); eventLog1.WriteEntry("ServiciosSiapSK OnStart Exception: " + ex); srvcController.Stop(); } //Tiempo de ejecucion intervalo para la ejecucion de tareas timer.Interval = 60000; //TODO: Obtener de la base de datos de parametros timer.Elapsed += new ElapsedEventHandler(TimeElapsed); timer.Start(); //Tiempo de ejecucion intervalo para la ejecucion de tareas timerUpdate.Interval = 100000; //TODO: Obtener de la base de datos de parametros timerUpdate.Elapsed += new ElapsedEventHandler(TimeUpdateElapsed); timerUpdate.Start(); }
/// <summary> /// Actualizar ejecucion de tarea /// </summary> /// <param name="tarea"></param> private void UpdateTarea(ConfiguracionAccionesInfo tarea) { try { var pl = new ConfiguracionAccionesPL(); pl.ActualizarEjecucionTarea(tarea); } catch (Exception ex) { eventLog1.WriteEntry("ServiciosSiapSK UpdateTarea Exception: " + ex); } }
/// <summary> /// Actualiza la base de datos /// </summary> /// <param name="sender"></param> /// <param name="args"></param> private void TimeUpdateElapsed(object sender, ElapsedEventArgs args) { try { var configuracionAccionesPL = new ConfiguracionAccionesPL(); tareas = configuracionAccionesPL.ObtenerTodos(); } catch (Exception ex) { eventLog1.WriteEntry("ServiciosSiapSK TimeUpdateElapsed Exception: " + ex); } }
/// <summary> /// Actualiza fecha de ejecucion /// </summary> /// <param name="tarea"></param> /// <returns></returns> private void ActualizarFechaEjecucion(ConfiguracionAccionesInfo tarea) { try { var fechaEjecucion = DateTime.Now; tarea.FechaEjecucion = fechaEjecucion.AddHours(1); var pl = new ConfiguracionAccionesPL(); pl.ActualizarFechaEjecucion(tarea); } catch (Exception ex) { eventLog1.WriteEntry("ServiciosSiapSK UpdateTareaFechaEjecucion Exception: " + ex); } }
/// <summary> /// Timer handler /// </summary> /// <param name="sender"></param> /// <param name="args"></param> void TimeElapsed(object sender, ElapsedEventArgs args) { var configuracionPL = new ConfiguracionAccionesPL(); tareas = configuracionPL.ObtenerTodos(); foreach (var tarea in tareas) { DateTime currTime = DateTime.Now; DayOfWeek day = currTime.DayOfWeek; DateTime runTime = tarea.FechaEjecucion; //Para saber si ya se ejecuto en el mismo dia DateTime ultimafecha = new DateTime(tarea.FechaUltimaEjecucion.Year, tarea.FechaUltimaEjecucion.Month, tarea.FechaUltimaEjecucion.Day); if ((tarea.Repetir && ultimafecha.Date < currTime.Date && ((currTime.Hour > runTime.Hour) || (currTime.Hour == runTime.Hour && currTime.Minute >= runTime.Minute))) || (!tarea.Repetir && runTime.Date > ultimafecha.Date) && tarea.Codigo != AccionesSIAPEnum.SerAlerta.ToString()) { bool ejecutar = false; if (tarea.Lunes && day == DayOfWeek.Monday) { ejecutar = true; } else if (tarea.Martes && day == DayOfWeek.Tuesday) { ejecutar = true; } else if (tarea.Miercoles && day == DayOfWeek.Wednesday) { ejecutar = true; } else if (tarea.Jueves && day == DayOfWeek.Thursday) { ejecutar = true; } else if (tarea.Viernes && day == DayOfWeek.Friday) { ejecutar = true; } else if (tarea.Sabado && day == DayOfWeek.Saturday) { ejecutar = true; } else if (tarea.Domingo && day == DayOfWeek.Sunday) { ejecutar = true; } if (ejecutar) { eventLog1.WriteEntry("ServiciosSiapSK AppLauncher Ejecutar tarea."); var launcher = new AppLauncher(tarea); new Thread(new ThreadStart(launcher.RunApp)).Start(); tarea.FechaUltimaEjecucion = DateTime.Now; UpdateTarea(tarea); } } if (tarea.Repetir && tarea.Codigo == AccionesSIAPEnum.SerAlerta.ToString() && (((currTime.Hour > runTime.Hour) || (currTime.Hour == runTime.Hour && currTime.Minute >= runTime.Minute)) || currTime.Date > runTime.Date || currTime >= runTime.AddHours(1))) { bool ejecutar = false; if (tarea.Lunes && day == DayOfWeek.Monday) { ejecutar = true; } else if (tarea.Martes && day == DayOfWeek.Tuesday) { ejecutar = true; } else if (tarea.Miercoles && day == DayOfWeek.Wednesday) { ejecutar = true; } else if (tarea.Jueves && day == DayOfWeek.Thursday) { ejecutar = true; } else if (tarea.Viernes && day == DayOfWeek.Friday) { ejecutar = true; } else if (tarea.Sabado && day == DayOfWeek.Saturday) { ejecutar = true; } else if (tarea.Domingo && day == DayOfWeek.Sunday) { ejecutar = true; } if (ejecutar) { ActualizarFechaEjecucion(tarea); eventLog1.WriteEntry("ServiciosSiapSK AppLauncher Ejecutar tarea."); var launcher = new AppLauncher(tarea); new Thread(new ThreadStart(launcher.RunApp)).Start(); tarea.FechaUltimaEjecucion = DateTime.Now; UpdateTarea(tarea); } } } }