Gestion indépendante de StreamWriter : release sans fermer le flux sous-jacent
Lorsqu'un objet StreamWriter est publié, il libère également son flux sous-jacent associé. Ce comportement peut entraîner des problèmes lorsque le flux sous-jacent doit rester ouvert. Heureusement, il existe plusieurs façons de résoudre ce problème.
Alternative :
Exemple de code :
Le code suivant illustre l'utilisation de la surcharge StreamWriter dans .NET Framework 4.5 et versions ultérieures :
<code class="language-csharp">using (var writer = new StreamWriter(baseStream, Encoding.UTF8, leaveOpen: true)) { // 对StreamWriter进行写入操作 } // 基础流保持打开状态</code>
Pour les anciennes versions de .NET Framework :
Dans les anciennes versions de .NET Framework, vous pouvez combiner des wrappers de flux en utilisant :
<code class="language-csharp">public class StreamWrapper : Stream { private Stream baseStream; public StreamWrapper(Stream baseStream) { this.baseStream = baseStream; } // 重写Close和Dispose方法以忽略基础流调用 // ... (此处需要补充Close和Dispose方法的具体实现,使其不关闭baseStream) } // 使用方法 using (var writer = new StreamWriter(new StreamWrapper(baseStream))) { // 对StreamWriter进行写入操作 } // 基础流保持打开状态</code>
En employant ces techniques, vous pouvez gérer les objets StreamWriter sans affecter l'état du flux sous-jacent. Veuillez noter que pour les anciennes versions des exemples de wrapper de flux du .NET Framework, vous devrez implémenter vous-même les méthodes Close
et Dispose
pour vous assurer qu'elles ne se ferment pas baseStream
.
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!