private void StartAccept(SocketAsyncEventArgs e) { if (e == null) { e = socketEventPool.CheckOut(); e.Completed += FinishAccept; } else { e.AcceptSocket = null; } try { if (!socket.AcceptAsync(e)) { FinishAccept(this, e); } } catch (ObjectDisposedException) { e.Completed -= FinishAccept; socketEventPool.CheckIn(e); // TODO: log } }