コード例 #1
0
        public void Stop()
        {
            _bKeepRunning = false;
            sockServer.CloseSocket();

            lock (dctClientes)
            {
                foreach (HomeBrokerHandlerState state in dctClientes.Values)
                {
                    try
                    {
                        state.HandlerLivroOfertas.Stop();
                        state.HandlerNegocios.Stop();
                        state.HandlerLivroAgregado.Stop();
                        state.ClientSocket.Shutdown(SocketShutdown.Both);
                    }
                    catch (Exception ex)
                    {
                        logger.Error("Erro(): " + ex.Message, ex);
                    }
                }
            }

            while (myThread != null && myThread.IsAlive)
            {
                logger.Info("Aguardando finalizacao ServidorConexaoHB");
                Thread.Sleep(250);
            }
            logger.Info("ServidorConexaoHB Finalizado");
        }
コード例 #2
0
        public void Stop()
        {
            _bKeepRunning = false;
            sockServer.CloseSocket();

            lock (dctClientes)
            {
                foreach (AnaliseGraficaHandlerState state in dctClientes.Values)
                {
                    try
                    {
                        state.HandlerAnaliseGrafica.Stop();

                        state.ClientSocket.Shutdown(SocketShutdown.Both);
                    }
                    catch (Exception ex)
                    {
                        logger.Error("Erro(): " + ex.Message, ex);
                    }
                }
            }

            while (myThread != null && myThread.IsAlive)
            {
                logger.Info("Aguardando finalizacao ServidorConexaoANG");
                Thread.Sleep(250);
            }
            logger.Info("ServidorConexaoANG Finalizado");
        }
コード例 #3
0
        private void MonitorConexaoServicoAlertas()
        {
            TimeSpan iTrialInterval;

            logger.Info("Iniciando thread de monitoracao de conexao com ServicodeAlertas");
            Thread.Sleep(TimeoutSocket);

            while (bKeepRunning)
            {
                // ajusta Timeout, caso esteja em horário sem movimento
                if (DateTime.Now.Hour > 7 && DateTime.Now.Hour < 21)
                {
                    iTrialInterval = (new TimeSpan(0, 0, 0, 0, TimeoutSocket));
                }
                else
                {
                    iTrialInterval = (new TimeSpan(0, 0, 0, 0, TimeoutSocket * 5));
                }

                if (!socket.IsConectado())
                {
                    gerenciadorAlertas.Limpar();
                    logger.Info("Reabrindo conexao com MDS...");
                    socket.OpenConnection();
                }
                else
                {
                    // Verifica ultima comunicacao com MDS
                    TimeSpan tslastpkt = DateTime.Now.Subtract(socket.LastPacket);
                    if (tslastpkt.CompareTo(iTrialInterval) > 0)
                    {
                        if (!pingPending)
                        {
                            SendPing();
                        }
                        else
                        {
                            logger.Warn("Finalizando conexao com MDS por timeout!!!");
                            socket.CloseSocket();
                        }
                    }
                }
                Thread.Sleep(iTrialInterval);
            }

            logger.Info("Thread de monitoracao de conexao com ServicoAlertas finalizacao");
        }