UDP パケットからデータを受信し、それをファイルに書き込むソフトウェアを作成しています。これは、UdpClient クラスをテストするためにコンソール アプリケーションとして作成したサンプル コードです。
while(!done)
{
Console.WriteLine("Receiving");
byte[] bytes = listener.Receive(ref groupEP);
Console.WriteLine("Received");
}
UDP パケットが受信されない場合、while ループが Receive(ref groupEP) 関数で一時停止することがわかりました。UDP パケットが受信された場合にのみ、「Received」の出力に進みます。
ただし、実際のプログラム (WPF) では、リソースを節約するために、代わりにタイマーを使用しています。現在、インターフェイスとファイルを更新するために正常に動作していますが、タイマーが 100 ミリ秒ごとに呼び出され、UDP パケットが 1 秒ごとにしか受信されない場合にどうなるか疑問に思っていました (UDP をいつ受信するか分からないと仮定します)。だから私は100ミリ秒を選択します)。これにより、1 秒ごとに 9 回の冗長なタイマー呼び出しが発生し、オーバーフローが発生することはありませんか? 現在、アプリケーションはこのシーンで正常に動作していますが、その理由と、考えられる結果があるかどうかを理解したいと思います。