IInputStream
特定のバイトに遭遇するまでデータを読み取りたいがあり、その時点で をIInputStream
他のオブジェクトに渡して残りのストリームを消費します。
これは私が思いついたものです:
public async Task HandleInputStream(IInputStream instream)
{
using (var dataReader = new DataReader(instream))
{
byte b;
do
{
await dataReader.LoadAsync(1);
b = dataReader.ReadByte();
// Do something with the byte
} while (b != <some condition>);
dataReader.DetachStream();
}
}
一度に 1 バイトずつ実行LoadData
すると、非常に遅くなるようです。私のジレンマは、バッファ サイズ (1024 など) を選択してそれをロードすると、値が 10 バイトになると、このメソッドには次の 1014 バイトのデータが含まれ、処理のために次のメソッドに渡す必要があることです。 .
これにアプローチするより良い方法はありますか、それともこれは受け入れられる解決策ですか?