私のアプリケーションでは、ソケット受信操作をブロックするポーリング ループが必要ですが、100 ミリ秒後にタイムアウトします。これにより、ビジー ループや Thread.sleep の使用を避けながら、必要なときに (ユーザーが UI で何かをクリックしたなど) ループを終了できます。
ただし、一度 .NET ソケットが開かれると、タイムアウトになるのは 1 回だけのようです。最初のタイムアウトの後、ブロックされるすべての呼び出しはすぐに例外をスローします。
この質問によると、「非同期操作をタイムアウトまたはキャンセルすることはできませんSocket
。」なぜだめですか?.NET の世界で問題に取り組むためのより良い方法はありますか?