Maison >développement back-end >C++ >Comment puis-je empêcher StreamWriter de fermer le BaseStream sous-jacent ?

Comment puis-je empêcher StreamWriter de fermer le BaseStream sous-jacent ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-12 08:03:43566parcourir

How Can I Prevent StreamWriter from Closing the Underlying BaseStream?

Opération Stream : dissocier StreamWriter de BaseStream

Il y a un dilemme lors de l'utilisation de StreamWriter et de ses méthodes Close() ou Dispose() : ces méthodes ferment également leur BaseStream sous-jacent. Des problèmes surviennent si des composants externes doivent encore accéder à StreamWriter après que BaseStream a terminé sa tâche.

Pour résoudre ce problème, .NET Framework 4.5 et versions ultérieures fournit un constructeur StreamWriter surchargé qui vous permet de spécifier que le BaseStream reste ouvert :

<code class="language-csharp">StreamWriter(Stream stream, Encoding encoding, bool leaveOpen)</code>

Ce constructeur accepte le troisième paramètre leaveOpen, qui est par défaut false. En réglant leaveOpen sur true, vous vous assurez que lorsque StreamWriter est fermé ou relâché, BaseStream reste ouvert.

Dans les versions antérieures du .NET Framework (antérieures à 4.5), ce constructeur surchargé n'existant pas, les méthodes suivantes peuvent être utilisées :

  • Évitez de libérer StreamWriter : Ne relâchez pas StreamWriter, videz-le simplement. Cela libérera toutes les données mises en mémoire tampon sans fermer BaseStream.
  • Créer un wrapper de flux  : implémentez un wrapper de flux personnalisé qui ignore les appels Close() et Dispose() tout en transmettant toutes les autres opérations au BaseStream sous-jacent.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn