public FrmMonitor() { InitializeComponent(); ClientEnvironment manager; Parametro oParam; try { manager = Conexao.CreateManager(Program.ConAux); //carregar threads threads = new List <ThreadIdetificada>(); foreach (var item in Program.empresasHabilitadas.Where(e => e.habilitada)) //somente habilitadas { var t = new ThreadIdetificada(); t.OnStart += new StatusEventHandler(oThreadIdentificada_OnStart); t.OnError += new ExceptionEventHandler(oThreadIdentificada_OnError); t.OnStop += new StatusEventHandler(oThreadIdentificada_OnStop); t.args = new object[3]; t.args[0] = Program.ConAux; t.args[1] = item.cnpj; t.args[2] = Program.enviarInformacoesSobreErros; oParam = Program.GetParametro(item.cnpj, manager); t.empresa = item.cnpj; t.executando = false; t.pastaEntrada = oParam.pastaEntrada; if (string.IsNullOrEmpty(t.pastaEntrada)) { MessageBox.Show("Empresa " + item.cnpj + ". Pasta de entrada não foi configurada."); } var operacao = new ParameterizedThreadStart(NFeUtils.ThreadMasterExecution); t.finalizar = false; t.minhaThread = new Thread(operacao); threads.Add(t); } dgvMonitor.AutoGenerateColumns = false; dgvMonitor.DataSource = threads; oLoop.Enabled = false; } catch (Exception ex) { threads = new List <ThreadIdetificada>();// criar lista vazia MessageBox.Show(ex.Message); } finally { oParam = null; manager = null; Conexao.DisposeManager(manager); } }
protected override void OnStart(string[] args) { string sSource = "NFeAdmin"; string sLog = "Application"; string sEvent = "Serviço inicializado com sucesso"; EventLogEntryType eventType = EventLogEntryType.Information; ClientEnvironment manager = null; try { String ConnectionFileName = AppDomain.CurrentDomain.BaseDirectory + "\\conexao"; #region carregar arquivo de conexao if (!File.Exists(ConnectionFileName)) { throw new Exception("Arquivo de conexão não existe ou esta corrompido. " + ConnectionFileName); } using (StreamReader SR = File.OpenText(ConnectionFileName)) { ConAux = SR.ReadLine(); cEmp = SR.ReadLine(); var linhaLog = SR.ReadLine(); if (!string.IsNullOrEmpty(linhaLog)) gravarLogEmArquivo = (linhaLog == "1"); var enviarInfo = SR.ReadLine(); if (!string.IsNullOrEmpty(enviarInfo)) enviarInformacoesSobreErros = (enviarInfo == "1"); } #endregion List<string> lEmpresas = null; if (cEmp.Contains(',')) { lEmpresas = cEmp.Split(',').ToList(); } else { lEmpresas = new List<string>(); lEmpresas.Add(cEmp); } empresasHabilitadas = new List<Empresa>(); manager = Conexao.CreateManager(ConAux); foreach (var empresa in lEmpresas) { ParametroQRY oParamQRY = new ParametroQRY(); oParamQRY.empresa = empresa; var emps = ParametroDAL.Instance.GetInstances(oParamQRY, manager); var existeEmpresa = emps.Count == 1; var pastaEntrada = string.Empty; if (existeEmpresa) { pastaEntrada = ((Parametro)emps[0]).pastaEntrada; } empresasHabilitadas.Add(new Empresa() { cnpj = empresa, AutomacaoHabilitada = false, habilitada = existeEmpresa, pastaEntrada = pastaEntrada }); } threads = new List<ThreadIdetificada>(); foreach (var item in empresasHabilitadas.Where(e => e.habilitada)) //somente habilitadas { var oThreadIdentificada = new ThreadIdetificada(); oThreadIdentificada.OnStart += new StatusEventHandler(oThreadIdentificada_OnStart); oThreadIdentificada.OnError += new ExceptionEventHandler(oThreadIdentificada_OnError); oThreadIdentificada.OnStop += new StatusEventHandler(oThreadIdentificada_OnStop); oThreadIdentificada.args = new object[3]; oThreadIdentificada.args[0] = ConAux; oThreadIdentificada.args[1] = item.cnpj; oThreadIdentificada.args[2] = enviarInformacoesSobreErros; oThreadIdentificada.empresa = item.cnpj; oThreadIdentificada.executando = false; oThreadIdentificada.pastaEntrada = item.pastaEntrada; //inicializa thread ParameterizedThreadStart operacao = new ParameterizedThreadStart(NFeUtils.ThreadMasterExecution); oThreadIdentificada.finalizar = false; oThreadIdentificada.minhaThread = new Thread(operacao); oThreadIdentificada.minhaThread.Start(oThreadIdentificada); threads.Add(oThreadIdentificada); } } catch (Exception ex) { sEvent = "Erro ao inicializar serviço : " + ex.Message; eventType = EventLogEntryType.Error; } finally { Conexao.DisposeManager(manager); } if (!EventLog.SourceExists(sSource)) EventLog.CreateEventSource(sSource, sLog); EventLog.WriteEntry(sSource, sEvent, eventType); }