public void StartMonitorPosicao(object sender) { try { gLogger.Info("StartMonitorPosicao - Iniciando Monitor de Posicao"); //lsFeriadosDI = MonitorCustodiaDB.Ob gLogger.Info("StartMonitorPosicao - Inicia rotina principal do sistema"); gLogger.Info("Zerando a posição de todos os clientes no banco de dados SQL"); MonitorPosicaoDB.ZeraPosicaoTodos(); gLogger.Info("Pausa de 2 segundos"); Thread.Sleep(2000); gLogger.Info("Inicia Thread de calculo de posição de Custódia dos clientes a cada 5 segundos."); thThreadClientes = new Thread(new ThreadStart(ThreadClientes)); thThreadClientes.Name = "ThreadClientes"; thThreadClientes.Start(); lstFatorCotacao1000.Add("CEGR3"); lstFatorCotacao1000.Add("CAFE3"); lstFatorCotacao1000.Add("CAFE4"); lstFatorCotacao1000.Add("CBEE3"); lstFatorCotacao1000.Add("SGEN4"); lstFatorCotacao1000.Add("PMET6"); lstFatorCotacao1000.Add("EBTP3"); lstFatorCotacao1000.Add("EBTP4"); lstFatorCotacao1000.Add("TOYB3"); lstFatorCotacao1000.Add("TOYB4"); lstFatorCotacao1000.Add("FNAM11"); lstFatorCotacao1000.Add("FNOR11"); lstFatorCotacao1000.Add("NORD3"); gLogger.Info("Processo de inicialização finalizado"); gLogger.Info("Aguardando Transações ..."); } catch (Exception ex) { gLogger.Info("Ocorreu um erro ao acessar o metodo StartMonitor.", ex); } }
public MonitorCustodiaInfo CalcularPosicaoCustodia(int idCliente) { var lRetorno = new MonitorCustodiaInfo(); try { lRetorno = MonitorPosicaoDB.ConsultarDadosClienteMonitorCustodia(new MonitorCustodiaInfo() { CodigoClienteBov = idCliente }); MonitorPosicaoDB.ConsultarCustodiaNormal(lRetorno.CodigoClienteBov, lRetorno.CodigoClienteBmf); if (lRetorno.CodigoClienteBmf.HasValue) { MonitorPosicaoDB.ConsultarCustodiaPosicaoDiaBMF(lRetorno.CodigoClienteBmf); } } catch (Exception ex) { gLogger.ErrorFormat("Erro calcular posição do cliente [{0}] - StackTrace - {1} -> error {2}", idCliente, ex.StackTrace, ex); } return(lRetorno); }
private void ThreadClientes() { DateTime lastRun = DateTime.MinValue; while (_bKeepRunning) { TimeSpan interval = DateTime.Now - lastRun; try { if (interval.TotalMilliseconds > 120000) { lastRun = DateTime.Now; gLogger.Debug("Obtendo relacao de clientes que operaram nos ultimos 2 minutos"); List <int> RelacaoClientesOperaram = new MonitorPosicaoDB().ListaClientesOperaramUltimoMomento(); if (RelacaoClientesOperaram.Count > 0) { gLogger.Info("Relacao de clientes encontrados que operaram nos ultimos 2 minutos.[" + RelacaoClientesOperaram.Count.ToString() + "]."); } else { gLogger.Info("Não existe clientes para serem calculados nesta tentativa."); } lock (ClientesMonitor) { foreach (int Cliente in RelacaoClientesOperaram) { //this.AddRemoveClientRunTimerProcessed(Cliente); if (!ClientesMonitor.Contains(Cliente)) { gLogger.Info("Acrescentando [" + Cliente + "] na lista de monitoracao"); this.ClientesMonitor.Add(Cliente); } this.RunTimer(Cliente); Thread.Sleep(250); } } if (interval.TotalMilliseconds > 86400000) { lastRun = DateTime.Now; gLogger.Debug("Obtendo relacao de clientes que operaram no dia"); List <int> RelacaoClientesRodada = new MonitorPosicaoDB().ObterClientesPosicaoDia(); #region Clientes BMF AFTER gLogger.Debug("Obtendo relacao de clientes com posicao AFTER BMF"); List <int> BMFAfter = new MonitorPosicaoDB().ObterClientesPosicaoBMFAfter(); foreach (int Cliente in BMFAfter) { if (!RelacaoClientesRodada.Contains(Cliente)) { RelacaoClientesRodada.Add(Cliente); } } #endregion if (RelacaoClientesRodada.Count > 0) { gLogger.Info("Relacao de clientes encontrados.[" + RelacaoClientesRodada.Count.ToString() + "]."); } else { gLogger.Info("Não existe clientes para serem calculados nesta tentativa."); } lock (ClientesMonitor) { foreach (int Cliente in RelacaoClientesRodada) { this.AddRemoveClientRunTimerProcessed(Cliente); if (!ClientesMonitor.Contains(Cliente)) { gLogger.Info("Acrescentando [" + Cliente + "] na lista de monitoracao"); this.ClientesMonitor.Add(Cliente); this.RunTimer(Cliente); Thread.Sleep(250); } } } } } } catch (Exception ex) { gLogger.Error("Ocorreu um erro ao acessar o método ThreadClientes:" + ex.Message, ex); } Thread.Sleep(250); } }