async public void Start() { if (_isListening) throw new InvalidOperationException("Server is already listening"); _listener.Start(); _isListening = true; while (_isListening) { try { var client = await _listener.AcceptTcpClientAsync(); var session = new TcpSession(client); session.PacketReceived += ClientPacketReceived; session.Disconnected += ClientDisconnected; session.Error += ClientError; if (!_sessions.TryAdd(session.Guid, session)) continue; RaiseClientConnected(new ClientConnectedEventArgs(session)); session.StartListening(); } catch (ObjectDisposedException) { break; } } }
async public void Start() { if (_isListening) { throw new InvalidOperationException("Server is already listening"); } _listener.Start(); _isListening = true; while (_isListening) { try { var client = await _listener.AcceptTcpClientAsync(); var session = new TcpSession(client); session.PacketReceived += ClientPacketReceived; session.Disconnected += ClientDisconnected; session.Error += ClientError; if (!_sessions.TryAdd(session.Guid, session)) { continue; } RaiseClientConnected(new ClientConnectedEventArgs(session)); session.StartListening(); } catch (ObjectDisposedException) { break; } } }