public bool AddPlayer(GamePlayer player) { int index = -1; //_locker.AcquireWriterLock(Timeout.Infinite); //try //{ lock (Data._syncStop) { if (_count == _userList.Length || player.IsInGame) { return(false); } for (byte i = 0; i < _userList.Length; i++) { if (_userList[i] == null && _openState[i]) { _count++; _userList[i] = player; player.CurrentGame = this; player.CurrentGameIndex = i; index = i; break; } } } if (index != -1) { OperateGameClass(); //SendRoomType(); player.Out.SendTCP(player.Out.SendRoomInfo(_player, this)); SendRoomInfo(); _processor.OnAddedPlayer(this, player); return(true); } else { log.Error(string.Format("EnterGame failed: count {0},list: {1}", _count, _userList)); return(false); } //} //finally //{ // _locker.ReleaseWriterLock(); //} }