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
Libérer: 2025-01-12 08:03:43
original
565 Les gens l'ont consulté

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal