- — синхронный блокирующий метод. Он не возвращается до тех пор, пока не завершится успешно, за исключением сбоя или [необязательно] тайм-аута.
Код: Выделить всё
Socket.Receive - является асинхронным, предоставленный обратный вызов/делегат вызывается, когда есть данные для получения, с использованием устаревшего шаблона Begin/End
Код: Выделить всё
Socket.BeginReceive - начинает асинхронный запрос на получение данных.
Код: Выделить всё
Socket.ReceiveAsync
Вы часто видите код типа
Код: Выделить всё
while(socket.Available==0 && !cancel)Sleep(50); if(!cancel)socket.Receive(...);Если я хочу сидеть и ждать данных, но через какое-то время точка отменить получение, скажем, пользователь нажимает кнопку «Стоп», как это можно аккуратно сделать, чтобы не вызвать обратный вызов позже, когда это неожиданно?
У меня было задавался вопросом о закрытии сокета, что могло бы привести к сбою операции приема, но это кажется несколько некрасивым. Правильно ли я мыслю, или различные методы API, перечисленные выше, допускают прямую отмену, чтобы я не рисковал зависать в асинхронных операциях?
Подробнее здесь: https://stackoverflow.com/questions/600 ... ve-request
Мобильная версия