protected override void NewClientAccepted(Socket socket) { SocketAsyncEventArgs receiveArgs = _receiveEventArgsPool.Pop(); SocketAsyncEventArgs sendArgs = _sendEventArgsPool.Pop(); UserSocket client = new UserSocket(socket, this); client.SetSocketAsyncEventArg(sendArgs, receiveArgs); client.ID = Interlocked.Increment(ref _socketIdSeq); client.State = SocketState.CONNECTED; Monitor.Enter(_userSocketDictLock); _userSocketDict[client.ID] = client; Monitor.Exit(_userSocketDictLock); client.StartReceive(); }