Как сделать UdpClient неблокирующим - PullRequest
0 голосов
/ 02 октября 2018

Я новичок в программировании сокетов и C #.Я пытаюсь создать приложение, в котором я использую UdpClient.

Но даже в сокете есть данные, но иногда Receive function не получает никаких данных и переходит в состояние блокировки.Просто чтобы предотвратить это, я использую счетчик.Функция получения находится в потоке.

И в main function я создал счетчик

int count = 0;
bool ret = IsDataReceived();
while(!ret && count < 30)
{
  ret = IsDataReceived();
  count++;
}

if(count>= 30)
{
thread.abort();

udpclient.close();
}
else
{
Console.WriteLine("Data Received");
}

Я сейчас так делаю, но я хочу знать, как мне сделать UdpClient без блокировки.

Заранее спасибо.

1 Ответ

0 голосов
/ 02 октября 2018

Я не знаю, как написана ваша функция IsDataReceive, если вы используете:

UdpClient.Receive

эта операция блокируется до тех пор, пока сообщение не вернется в сокет

, если вы не хотите иметьВы можете использовать операцию блокировки:

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