J'ai un IInputStream
que je veux lire des données jusqu'à ce que je rencontre un certain octet, à quel point je vais passer le IInputStream
à un autre objet à consommer le reste du flux.WinRT - Lire à partir de IInputStream un octet à la fois jusqu'à un octet spécifique rencontré
C'est ce que je suis venu avec:
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();
}
}
Il semble comme la course LoadData
pour un octet à la fois sera horriblement lent. Mon dilemme est que si je choisis une taille de tampon (comme 1024) et que je la charge, et que ma valeur affiche 10 octets, alors cette méthode aura les 1014 octets de données suivants et devra passer à la méthode suivante pour le traitement .
Existe-t-il une meilleure façon d'aborder cette question ou s'agit-il d'une solution acceptable?
Je n'ai pas encore testé la performance. Cela ne devrait pas dépasser quelques centaines d'octets - donc je pense que ça marchera aussi. Il a juste soulevé un drapeau rouge avec moi quand je l'ai écrit. –
Le flux provient d'une socket donc vous ne pouvez pas vraiment le chercher. –
J'ai fait quelques tests et cela semble fonctionner correctement. Je vais utiliser cette méthode pour l'instant. Merci pour le deuxième avis! –