Windows 8 Metro アプリで StreamSockets を使用しており、DataReader を使用して受信データを読み取りたいと考えています。ネットワークバッファで利用可能なすべてのデータをいつでも読み取ることができるようにするソケットから読み取るために使用する必要がある特定のパターンまたはモデルはありますか?
現在、DataReader.LoadAsync() を呼び出してから DataReader.Read…() を呼び出す必要があることを理解しています。ネットワークバッファに存在するすべてのものをいつでも読み取れるようにしたいと考えています。着信メッセージの終わりを検出したいときに問題が発生します。ループを使用して LoadAsync を継続的に呼び出そうとすると、ネットワーク バッファーの最後に到達するとブロックされます。.NET 4.0 には、ネットワーク バッファーにデータが存在するかどうかを示す DataAvailable フィールドを提供する NetworkStream クラスがあるため、このフラグが false になるまでループを続けることができます。長時間ブロックすることなく、ネットワークバッファで利用可能なすべてのデータを消費できるようにする同様の方法はありますか?