Я пишу программное обеспечение, которое будет получать данные из пакета UDP, а затем записывать их в файл. Это пример кода, который я написал как консольное приложение для тестирования класса UdpClient.
while(!done)
{
Console.WriteLine("Receiving");
byte[] bytes = listener.Receive(ref groupEP);
Console.WriteLine("Received");
}
Я обнаружил, что если пакеты UDP не были получены, цикл while будет останавливаться на функции Receive(ref groupEP). Только когда пакет UDP получен, он продолжит печать «Получено».
Однако для реальной программы (WPF) в целях экономии ресурсов я использую вместо этого таймеры. В настоящее время он отлично работает для обновления интерфейса и файла, но мне было интересно, что произойдет, если таймер вызывается каждые 100 мс, а пакеты UDP принимаются только каждую 1 секунду (при условии, что я не знаю, когда я получу UDP поэтому я выбираю 100 мс). Не приведет ли это к 9 избыточным вызовам таймера каждую 1 секунду и не приведет ли это к переполнению? В настоящее время приложение работает нормально для этого сценария, но я хотел бы понять, почему и есть ли какие-либо возможные последствия.