private async Task WaitForIncomingConnectionsAsync()
        {
            while (_listenerStarted)
            {
                try
                {
                    await MaxConnectionsSemaphore.WaitAsync();

                    var client = await _tcpListener.AcceptTcpClientAsync();

                    var communicationChannel = new CommunicationChannel(client);
                    var player             = new Player(communicationChannel);
                    var listenCommandsTask = player.ListenCommandsAsync(this);
                    var x = _activeTasks.TryAdd(listenCommandsTask.Id, listenCommandsTask);
                }
                catch (InvalidOperationException)
                {
                    return;
                }
            }
        }
 public Player(CommunicationChannel channel)
 {
     Channel = channel;
 }