protected override void OnStart(string[] args)
        {
            ConfigurationParams config     = null;
            List <string>       lstCultura = new List <string>();

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia())
            {
                DaOperacoesGeo dataAccess = new DaOperacoesGeo(bancoDeDados);
                config = dataAccess.BuscarConfiguracoes();

                System.Collections.Generic.Dictionary <string, string> dic = dataAccess.ObterParameters();

                foreach (var item in dic)
                {
                    lstCultura.Add(string.Format("\n{0}: {1}", item.Key, item.Value));
                }
            }

            Utilitarios.Log.GerarLog(string.Format("Cultura da Thread: {0}\n {1}",
                                                   System.Threading.Thread.CurrentThread.CurrentCulture.DisplayName,
                                                   string.Concat(lstCultura)));

            timerOperacoes = new TimerOperacoesGeo();
            timerOperacoes.Inicializar(config);
        }
예제 #2
0
        protected override void Executar()
        {
            try
            {
                DaOperacoesGeo dataAccess = null;
                Processo       processo;
                string         mutexServico;
                string         mutexProcesso;
                Ticket         ticket;

                // Alocando novos Processos
                int count = fila.Count;
                for (int i = 0; i < count; i++)
                {
                    if (fila[i] == null || !fila[i].IsExecutando)
                    {
                        //slot livre

                        ticket = null;
                        using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia())
                        {
                            dataAccess = new DaOperacoesGeo(bancoDeDados);
                            ticket     = dataAccess.ReservarTicket(_config.queuesInfo[i]);
                        }

                        if (ticket == null)
                        {
                            break;
                        }

                        mutexServico  = strMutexServico + i;
                        mutexProcesso = strMutexProcesso + i;
                        processo      = new Processo(@"ProcessOperacoesPublicoGeo.exe", ticket.id + "," + ticket.tipo + "," + ticket.etapa + "," + mutexServico + "," + mutexProcesso, mutexServico, mutexProcesso);

                        processo.TempoLimiteExecucao = _config.processMaxDuration * 1000;

                        fila[i] = processo;

                        new Thread(new ThreadStart(() =>
                        {
                            processo.AguardarExecutar();
                        })).Start();
                    }
                }
            }
            catch (Exception exc)
            {
                Log.GerarLog(exc);
            }
        }
예제 #3
0
        public void Inicializar(ConfigurationParams config)
        {
            _config = config;

            fila = new List <Processo>();
            for (int i = 0; i < _config.queuesInfo.Count; i++)
            {
                fila.Add(null);
            }

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia())
            {
                DaOperacoesGeo dataAccess = new DaOperacoesGeo(bancoDeDados);
                dataAccess.InvalidarExecucoes();
            }

            base.Inicializar(_config.timerInterval * 1000);
        }