/// <summary> /// The main entry point for the application. /// </summary> static void Main() { try { if (System.Diagnostics.Debugger.IsAttached) { #if DEBUG Service_SVBatch service = new Service_SVBatch(); service.StartDebug(new string[2]); System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite); #endif } else { ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new Service_SVBatch() }; ServiceBase.Run(ServicesToRun); } } catch (Exception ex) { var log = new Util.Log(ConfigurationManager.AppSettings["LogServico"]); log.Escreve_Log(ex.Message); log.Escreve_Log(ex?.StackTrace); log.Escreve_Log(ex?.InnerException?.Message); } }
protected override void OnStart(string[] args) { try { GerenciadorTarefas gerenciadorTarefas = new GerenciadorTarefas(); gerenciadorTarefas.GerenciarTarefas(); } catch (Exception ex) { var log = new Util.Log(ConfigurationManager.AppSettings["LogServico"]); log.Escreve_Log(ex.Message); log.Escreve_Log(ex?.InnerException?.Message); log.Escreve_Log(ex?.StackTrace); } }
public void GerenciarTarefas() { var log = new Util.Log(ConfigurationManager.AppSettings["LogServico"]); try { log.Escreve_Log("Reiniciando a Execução dos Serviços"); } catch (Exception e) { log.Escreve_Log($"Ocorreram erros ao Reiniciar os Serviços - {e.Message}"); log.Escreve_Log(e?.InnerException?.Message); } tmrCheckTarefas = new System.Timers.Timer(); tmrCheckTarefas.Elapsed += new System.Timers.ElapsedEventHandler(tmrCheckTarefas_Elapsed); tmrCheckTarefas.AutoReset = true; tmrCheckTarefas.Interval = 60000; //1 minuto tmrCheckTarefas.Start(); }
void tmrCheckTarefas_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { var log = new Util.Log(ConfigurationManager.AppSettings["LogServico"]); var objBase = new Services.Base(); try { tmrCheckTarefas.Enabled = false; log.Escreve_Log("Verificando processos à serem Executados"); //lista os processos. var schedulers = objBase.GetSchedulesForProcess(e.SignalTime.Hour, e.SignalTime.Minute); if (schedulers.Any()) { log.Escreve_Log($"Quantidade de Processos a serem executados: {schedulers.Count.ToString()}"); foreach (var sched in schedulers) { var tarefasLog = new List <TarefaLog>(); try { var threadTarefa = new System.Threading.Thread( delegate() { log.Escreve_Log($"Executando Rotina: {sched.Programacao.Descricao}"); objBase.AtualizaStatusEmExecucao(sched.ProgramacaoId, true); foreach (var tarefa in sched.Programacao.Tarefas.OrderBy(x => x.Sequencia)) { try { if (tarefasLog.Any(x => x.Id == tarefa.TarefaDependenteId && !x.ISSuccess)) { break; } var result = objBase.Proccess(tarefa); tarefasLog.Add(new TarefaLog(tarefa.TarefaId, result)); } catch (Exception ex) { log.Escreve_Log(ex.Message); log.Escreve_Log(ex?.StackTrace); log.Escreve_Log(ex?.InnerException?.Message); //caso der algum erro, restart o timer. tmrCheckTarefas.Interval = 60000; tmrCheckTarefas.Start(); } } objBase.AtualizaStatusEmExecucao(sched.ProgramacaoId, false); }); threadTarefa.Start(); } catch (Exception ex) { log.Escreve_Log(ex.Message); log.Escreve_Log(ex?.StackTrace); log.Escreve_Log(ex?.InnerException?.Message); //caso der algum erro, restart o timer. tmrCheckTarefas.Interval = 60000; tmrCheckTarefas.Start(); } } } else { log.Escreve_Log("Não existem processos à serem Executados"); } tmrCheckTarefas.Enabled = true; } catch (Exception ex) { log.Escreve_Log("Erro obter serviços para procesamento"); log.Escreve_Log(ex.Message); log.Escreve_Log(ex?.StackTrace); log.Escreve_Log(ex?.InnerException?.Message); //caso der algum erro, restart o timer. tmrCheckTarefas.Interval = 60000; tmrCheckTarefas.Start(); } }