public override void Stop() { if (this.IsRunning == 1) { this.IsRunning = -1; if (!MarryRoomMgr.UpdateBreakTimeWhereServerStop()) { Console.WriteLine("Update Marry BreakTime failed"); } if (!SpaRoomMgr.UpdateBreakTimeWhereSpaServerStop()) { Console.WriteLine("Update Spa BreakTime failed"); } RoomMgr.Stop(); GameMgr.Stop(); BattleMgr.Stop(); if (this._loginServer != null) { this._loginServer.Disconnected -= new ClientEventHandle(this.loginServer_Disconnected); this._loginServer.Disconnect(); } if (this.m_pingCheckTimer != null) { this.m_pingCheckTimer.Change(-1, -1); this.m_pingCheckTimer.Dispose(); this.m_pingCheckTimer = null; } if (this.m_saveDbTimer != null) { this.m_saveDbTimer.Change(-1, -1); this.m_saveDbTimer.Dispose(); this.m_saveDbTimer = null; } if (this.m_saveRecordTimer != null) { this.m_saveRecordTimer.Change(-1, -1); this.m_saveRecordTimer.Dispose(); this.m_saveRecordTimer = null; this.SaveRecordProc(null); } if (this.m_buffScanTimer != null) { this.m_buffScanTimer.Change(-1, -1); this.m_buffScanTimer.Dispose(); this.m_buffScanTimer = null; } if (this.m_limitItemRefreshTimer != null) { this.m_limitItemRefreshTimer.Change(-1, -1); this.m_limitItemRefreshTimer.Dispose(); this.m_limitItemRefreshTimer = null; } this.SaveTimerProc(null); base.Stop(); Thread.CurrentThread.Priority = ThreadPriority.BelowNormal; GameServer.log.Warn("Server Stopped!"); } }
/// <summary> /// Stops the server, disconnects all clients, and writes the database to disk /// </summary> public override void Stop() { if (m_isRunning) { m_isRunning = false; //记录礼堂使用情况 if (!MarryRoomMgr.UpdateBreakTimeWhereServerStop()) { Console.WriteLine("Update BreakTime failed"); } RoomMgr.Stop(); GameMgr.Stop(); if (_loginServer != null) { _loginServer.Disconnected -= new ClientEventHandle(loginServer_Disconnected); _loginServer.Disconnect(); } //ping check timer if (m_pingCheckTimer != null) { m_pingCheckTimer.Change(Timeout.Infinite, Timeout.Infinite); m_pingCheckTimer.Dispose(); m_pingCheckTimer = null; } //Stop the World Save timer if (m_saveDbTimer != null) { m_saveDbTimer.Change(Timeout.Infinite, Timeout.Infinite); m_saveDbTimer.Dispose(); m_saveDbTimer = null; } if (m_saveRecordTimer != null) { m_saveRecordTimer.Change(Timeout.Infinite, Timeout.Infinite); m_saveRecordTimer.Dispose(); m_saveRecordTimer = null; SaveRecordProc(null); } if (m_buffScanTimer != null) { m_buffScanTimer.Change(Timeout.Infinite, Timeout.Infinite); m_buffScanTimer.Dispose(); m_buffScanTimer = null; } SaveTimerProc(null); //Stop the base server base.Stop(); Thread.CurrentThread.Priority = ThreadPriority.BelowNormal; log.Info("Server Stopped!"); //LogManager.Shutdown(); Console.WriteLine("Server Stopped!"); } }