Después de llamar a Socket.Shutdown, Socket.Close y Socket.Disconnect, parece que Socket.ReceiveAsync no se cancela. Los intentos de reutilizar el objeto SocketAsycEventArgs utilizada en la llamada ReceiveAsync (se sugiere en la documentación como la mejor práctica) dan como resultado el error:Cancelar una llamada a Socket.xxxxAsync
An asynchronous socket operation is already in progress using this SocketAsyncEventArgs instance
¿Qué tengo que hacer para conseguir ReceiveAsync libere su agarre en este caso SocketAsyncEventArgs?
Editar: He solucionado esto al marcar una recepción pendiente y no hacer ninguna limpieza hasta que se recibe la recepción (es decir, se envía Completed). No se siente muy bien sin embargo. ¿No puede ser abortado, como la API de WebRequest?
Esto no intenta responder a la pregunta planteada. El problema del OP proviene de intentar reutilizar 'SocketAsyncEventArgs' antes de que se dispare el controlador' Completed'. – binki