После вызова Socket.Shutdown, Socket.Close и Socket.Disconnect оказывается, что Socket.ReceiveAsync не прерывается. Попытки повторно использовать объект SocketAsycEventArgs, использованный в вызове ReceiveAsync (рекомендуется в документации в качестве передового опыта), приводят к ошибке:
Асинхронная операция с сокетом уже выполняется с использованием этого экземпляра SocketAsyncEventArgs
Что мне нужно сделать, чтобы ReceiveAsync освободил захват этого экземпляра SocketAsyncEventArgs?
Редактировать: я работал над этим, отмечая ожидающее получение и не делая никакой очистки, пока не поступит получение (то есть отправлено Завершено). Хотя не слишком хорошо. Разве это не может быть просто прервано, как API WebRequest?