public void KickClient(GameClient clientToKick) { _connectedClients.KickClient(clientToKick); foreach (var netObj in _netObjects.Values.Where(x => x.GameClientId == clientToKick.Id)) { _udpServer.MessageSender.SendDestroyNetObjToOtherClients(clientToKick, netObj.Id); } NetObj removedNetObj = null; _netObjects.Where(x => x.Value.GameClientId == clientToKick.Id).ToList().ForEach(x => _netObjects.Remove(x.Key, out removedNetObj)); if (removedNetObj == null) { throw new Exception("Failed to remove netobj"); } _udpServer.MessageSender.SendPlayerDisconnectedToAllClients(clientToKick); }