JohnnyGat
@JohnnyGat
Стараюсь писать код, понятный человеку.

Как «отловить» ситуацию что время ожидания данных истекло?

Здравствуйте. Задача совершенно банальная, но раньше я не сталкивался с подобным, а гугл совершенно ничем не помог. Не нашел ничего даже близкого к теме моего вопроса.

На руках есть "самоделка" которая раз в минуту присылает данные по UDP, я отображаю эти данные на экране. Как правильно на C# "отловить" момент если спустя минуту после приема данных мне не пришли новые? Т.е. в нить работы с UDP пришли данные, я их проанализировал, вызвал событие (передав ему данные для отображения), обработчик события отобразил данные на экран, через минуту все повторяется, но если минута прошла, а новых данных нет - как "отловить данную ситуацию"?
UdpClient receivingUdpClient = new UdpClient(localPort);
IPEndPoint RemoteIpEndPoint = null;
while (true)
{
    byte[] receiveBytes = receivingUdpClient.Receive(ref RemoteIpEndPoint);
    // анализ данных и вызов события OnDataReceived, обработчик которого выводит данные на экран
}


PS: мне видится решение в виде BackgroundWorker с бесконечным циклом и перезаписыванием переменной со временем и ежесекундной проверкой, но мне кажется это наихудший вариант из возможных. Если ли более правильный вариант?
  • Вопрос задан
  • 68 просмотров
Решения вопроса 1
Griboks
@Griboks Куратор тега C#
Для этого используйте.UdpClient.Client.ReceiveTimeout.

Вот первая ссылка в поиске https://stackoverflow.com/questions/2281441/can-i-...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы