public override void Receive() { while (_client.Connected) { try { string message = SocketCommunication.GetMessage(_client.Client); QueueCommand(message); } catch (Exception e) // handle exception { Logger.Log(e.Message); _client.Close(); ServerHandler?.Players.Remove(this); ServerHandler?.MatchmakingQueue.Remove(this); GameHandler?.Players.Remove(this); _receiveThread.Join(); } } }