コード例 #1
0
ファイル: LoginServer.cs プロジェクト: zhangbinglxf/AionEmu
        public static void Main()
        {
            try
            {
                log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("log4net.config"));
                System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);

                //try
                //{
                //    Test();
                //}
                //catch (Exception err)
                //{

                //}

                AppDomain.CurrentDomain.UnhandledException += UnhandledException;
                Util.RemoveMenu();
                Util.RegeditCloseEvent(ref handler, add: true);
                Console.Title = title;
                Util.SystemInfo();
                Stopwatch stopwatch = Stopwatch.StartNew();
                CronService.GetInstance().Initialize();
                Util.Section("服务配置");
                Configs.LoadConfig();
                Util.Section("核心服务");
                DAOManager.Initialize();
                KeyGen.Initial();
                GameService.LoadGameservers();
                BannedIpController.Initialize();
                LunaController.GetInstance().Initial();
                Util.Section("网络服务");
                AionPacketFactory.GetInstance();
                LoginListener.GetInstance().Start();
                GamePacketFactory.GetInstance();
                GameListener.GetInstance().Start();
                Util.Section("充值奖励");
                PayRewardService.GetInstance();
                Util.Section("");
                stopwatch.Stop();
                string text  = string.Format("登陆服务器启动完成,耗时{0}秒!", ((double)stopwatch.ElapsedMilliseconds / 1000.0).ToString("0.00"));
                string text2 = "使用快捷键 Ctrl + C 关闭服务并保存数据!";
                Console.WriteLine(new string(' ', Conversions.ToInteger(Util.StringLength(text))) + text);
                Console.WriteLine(new string(' ', Conversions.ToInteger(Util.StringLength(text2))) + text2);
                Util.Section("");
                if (LoginConfig.WORKING_MEMORY_SET_ENABLE)
                {
                    WorkingMemorySet.GetInstance().Initialize(LoginConfig.WORKING_MEMORY_SET_CRON);
                }
            }
            catch (Exception err)
            {
                log.Error(err.Message, err);
            }
        }
コード例 #2
0
        public static LunaController GetInstance()
        {
            object @lock = _lock;

            ObjectFlowControl.CheckForSyncLockOnValueType(@lock);
            bool lockTaken = false;

            try
            {
                Monitor.Enter(@lock, ref lockTaken);
                if (Information.IsNothing(instance))
                {
                    instance = new LunaController();
                }
                return(instance);
            }
            finally
            {
                if (lockTaken)
                {
                    Monitor.Exit(@lock);
                }
            }
        }