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);
            }
        }
예제 #2
0
        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);

        }