/// <summary> /// Método Dispose /// </summary> /// <param name="disposing">Parâmetro disposing</param> protected virtual void Dispose(bool disposing) { if (!disposing) { return; } // Finalizar instancias try { if ((this.sessaoControle != null) && this.sessaoPrivada) { this.sessaoControle.Dispose(); this.sessaoControle = null; } } catch (Exception exp) { Logger.Error(new PointBlankException("[BaseBo] Ocorreu um erro ao finalizar sessão controle", exp)); } try { if (this.factoryBoLocal != null) { this.factoryBoLocal.Dispose(); this.factoryBoLocal = null; } } catch (Exception exp) { Logger.Error(new PointBlankException("[BaseBo] Ocorreu um erro ao finalizar factoryBoLocal", exp)); } try { if (this.transacaoControle != null) { this.transacaoControle.Dispose(); this.transacaoControle = null; } } catch (Exception exp) { Logger.Error(new PointBlankException("[BaseBo] Ocorreu um erro ao finalizar transacaoControle", exp)); } // Liberar a memoria (Testado) GC.Collect(); }
/// <summary> /// Método Main /// </summary> /// <param name="args">Parâmetro args</param> public static void Main() { try { // Log de inicio Console.Title = "Point Blank - Auth"; // Configurações Logger.Info("Carregando arquivo de configurações"); ConfigFile configFile = new ConfigFile(); // Inicializar controles do WCF WcfNetwork.Inicializar(configFile.CoreHost, configFile.CorePort); // Validar Conexão try { WcfNetwork.ValidarConexao(configFile.CoreHost, configFile.CorePort); } catch (Exception exp) { Logger.Error(exp, "Validar conexão com servidor (Core)", false); return; } // Criar/Verificar estrutura padrão Logger.Info("Verificando necessidade de criação dos servidores"); FactoryBo.GameServer(bo => bo.CriarEstruturaPadrao(configFile.NetworkHost, configFile.NetworkPort)); // Teste IList <GameServer> listaTmp = FactoryBo.GameServer(bo => bo.ObterRelacaoTodos()); // Inciar serviços do servidor new GameNetwork(configFile.NetworkHost, configFile.NetworkPort, configFile.ShowHex); } catch (ThreadAbortException) { Logger.Error("Ocorreu um erro não tratado, todas as conexões serão finalizadas"); throw; } catch (Exception exp) { Logger.Error(exp, "Ocorreu um erro e com isso as conexões serão finalizadas", true); } finally { Process.GetCurrentProcess().WaitForExit(); } }
/// <inheritdoc/> protected override void RunStartPacket() { this.SendPacket(new PROTOCOL_SERVER_MESSAGE_CONNECTIONSUCCESS_ACK(this, FactoryBo.GameServer(bo => bo.ObterRelacaoTodos()))); }