我正在编写一个软件,它将从 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所以我选择100ms)。这不会导致每 1 秒有 9 个冗余计时器调用,这会导致溢出吗?目前该应用程序在这个场景中运行良好,但我想了解为什么以及是否有任何可能的后果。