public void StartProcess() { var listRegraSADT = new List <Regra>(); var listRegraInternacao = new List <Regra>(); try { { // Iniciar LightInjection Scope // ServiceLocator de Repositorios // Objeto de configuração de e-mail var iteration = 0; while (!_cancellationToken.IsCancellationRequested) { var faturas = Mocks.FaturaEmpty; // Numero maximo de iterações na PoC if (iteration < Config.MAX_WHILE_ITERATION) { faturas = Mocks.Faturas(qtdFaturas: Config.NUMBER_OF_INVOICE); iteration++; } else { Program.OnStop(); } VerificarAtualizacaoDeRegras( listRegraSADT: listRegraSADT, listRegraInternacao: listRegraInternacao); if (faturas.Any()) { var dadosParaValidacao = new DadosParaValidacao( listRegraSADT: listRegraSADT, listRegraInternacao: listRegraInternacao); ProcessarFaturas(faturas, dadosParaValidacao); } if (tasks.Count > 0) { WaitTasks(tasks: tasks); } else { Thread.Sleep(millisecondsTimeout: Config.POOLING_INTERVAL); } } } } catch (Exception ex) { Mocks.ServiceRepository.Update("Erro - " + ex.Message); } }
public void StartProcess() { var ListRegraSADT = new List <Regra>(); var ListRegraInternacao = new List <Regra>(); try { { // Iniciar LightInjection Scope // ServiceLocator de Repositorios // Objeto de configuração de e-mail var iteration = 0; while (true) { var faturas = Mocks.FaturaEmpty; // Numero maximo de iterações na PoC if (iteration < Config.MAX_WHILE_ITERATION) { faturas = Mocks.Faturas(qtdFaturas: Config.NUMBER_OF_INVOICE); iteration++; } else { // Cannot break :( // break; } if (faturas.Any()) { var lastUpdate = DateTime.MinValue; var ListTodasRegras = new List <Regra>(); ListTodasRegras.AddRange(ListRegraSADT); ListTodasRegras.AddRange(ListRegraInternacao); var dataInsercao = ListTodasRegras.Count > 0 ? ListTodasRegras.Max(o => o.DataInsercao) : DateTime.MinValue; var dataAlteracao = ListTodasRegras.Count > 0 ? ListTodasRegras.Max(o => o.DataAlteracao) : DateTime.MinValue; lastUpdate = dataInsercao; if (dataAlteracao > dataInsercao) { lastUpdate = dataAlteracao; } // Utiliza lastUpdate para verificar se ocorreu atualização das listas if (ListTodasRegras.Count <= 0) { Mocks.Regras.CarregarListaDeRegras( listRegraSADT: ListRegraSADT, listRegraInternacao: ListRegraInternacao); } SemaphoreSlim semaphore = new SemaphoreSlim(1); var dadosParaValidacao = new DadosParaValidacao( listRegraSADT: ListRegraSADT, listRegraInternacao: ListRegraInternacao); Task task = new Task(delegate { EfetuarValidacao(faturas, dadosParaValidacao, semaphore); }); task.Start(); } Thread.Sleep(Config.POOLING_INTERVAL); } } } catch (Exception ex) { Mocks.ServiceRepository.Update("Erro - " + ex.Message); } }