условное началоПолучить - PullRequest
       5

условное началоПолучить

0 голосов
/ 15 сентября 2009

Я пишу клиентскую программу, которая использует Sockets. Я хотел бы, чтобы клиент получал асинхронно, ЕСЛИ он ожидает ответа, и в этом случае я хотел бы получать синхронно.

Моя текущая проблема заключается в том, что из-за того, что я должен сделать вызов socket.BeginReceive, который ждет, пока в буфере не будет данных, асинхронный вызов всегда происходит до вызова синхронизации.

Как я могу временно остановить выполнение BeginReceive? Есть ли способ вызвать EndReceive, и после того, как я закончу получать синхронно, я смогу продолжать получать асинхронно?

1 Ответ

0 голосов
/ 15 сентября 2009

Насколько я знаю, нет способа остановить короткое BeginReceive от выключения сокета. Чтобы сделать то, что вы пытаетесь выполнить, вам нужно перевести ваши вызовы на использование полностью синхронных и поместить асинхронные вызовы, которые вы хотите сделать, в отдельные потоки. Затем вы убьете / приостановите поток, когда захотите сделать дополнительный вызов. Можно также установить для свойства ReceiveTimeout что-то низкое и продолжать цикл до тех пор, пока он не увидит запрос на остановку, как, например, установка переменной класса.

Просто ради любопытства, зачем вам делать синхронный вызов, если вы уже принимаете асинхронно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...