private void ReceivingThread()
    {
        while (state == State.Running)
        {
            try
            {
                INetworkMessage message = NetworkMessageSerializer.Deserialize(networkStream);
                message.InitializeOnReceived(this);
                Debug.Log("Received " + message);

                messagesToProcess.Enqueue(message);
                message.PostEvent();

                didReceiveSinceLastUpdate = true;
            }
            catch (ThreadAbortException)
            {
                return;
            }
            catch (Exception ex)
            {
                Debug.Log("Exception while deserializing a network message: " + ex);
                Close();
            }
        }
    }