private void ReturnSendingSocketArgs() { var socketArgs = Interlocked.Exchange(ref _sendSocketArgs, null); if (socketArgs != null) { socketArgs.Completed -= OnSendAsyncCompleted; socketArgs.AcceptSocket = null; if (socketArgs.Buffer != null) { socketArgs.SetBuffer(null, 0, 0); } SocketArgsPool.Return(socketArgs); } }
private void ProcessAccept(SocketAsyncEventArgs e) { if (e.SocketError != SocketError.Success) { HandleBadAccept(e); } else { var acceptSocket = e.AcceptSocket; e.AcceptSocket = null; _acceptSocketArgsPool.Return(e); OnSocketAccepted(acceptSocket); } StartAccepting(); }