En tant que discussed before, lorsqu'un BinaryReader ou un BinaryWriter est fermé, son Stream sous-jacent est également fermé (aargh). Considérez cette situation: une routine R
est passée un MemoryStream, par exemple M
; Je voudrais écrire quelques trucs à M
et ensuite le passer à une autre routine pour plus de traitement (pas nécessairement d'écriture). Pour plus de commodité, je voudrais envelopper M
dans un BinaryWriter pour écrire. Après l'écriture, j'en ai fini avec le BinaryWriter mais pas avec M
.Comment puis-je "bifurquer" un flux dans .NET?
void R(MemoryStream M)
{
using (B = new BinaryWriter(M))
{
// write some stuff using B
}
S(M); // now pass M to another routine for further processing
}
Mais, je ne peux pas disposer de la BinaryStream sans fermer M
.
Q: Y a-t-il un moyen de faire l'une des choses suivantes?
- extraire l'octet sous-jacent [] à partir d'un MemoryStream,
- clone un flux
- rouvre un flux après qu'il a été fermé
Je ne connais pas C#, mais en Java, vous abandonneriez tout simplement sans fermer le BinaryWriter. La construction utilisant {...} ne ferme-t-elle pas? Alors n'utilisez pas cette construction! –
P.S. Mais vous devez vous assurer de vider le BinaryWriter avant de l'abandonner. –