Heim >Backend-Entwicklung >C++ >Wie kann ich verhindern, dass StreamWriter den zugrunde liegenden BaseStream schließt?
Stream-Vorgang: StreamWriter von BaseStream trennen
Bei der Verwendung von StreamWriter
und seinen Methoden Close()
oder Dispose()
besteht ein Dilemma: Diese Methoden schließen auch ihre zugrunde liegenden BaseStream
. Probleme entstehen, wenn externe Komponenten noch auf StreamWriter
zugreifen müssen, nachdem BaseStream
seine Aufgabe erledigt hat.
Um dieses Problem zu lösen, stellt .NET Framework 4.5 und höher einen überladenen StreamWriter
-Konstruktor bereit, mit dem Sie angeben können, dass BaseStream
geöffnet bleibt:
<code class="language-csharp">StreamWriter(Stream stream, Encoding encoding, bool leaveOpen)</code>
Dieser Konstruktor akzeptiert den dritten Parameter leaveOpen
, der standardmäßig false
ist. Indem Sie leaveOpen
auf true
setzen, stellen Sie sicher, dass StreamWriter
geöffnet bleibt, wenn BaseStream
geschlossen oder freigegeben wird.
In früheren Versionen von .NET Framework (vor 4.5) können die folgenden Methoden verwendet werden, da dieser überladene Konstruktor nicht vorhanden ist:
StreamWriter
nicht frei, sondern leeren Sie es einfach. Dadurch werden alle gepufferten Daten freigegeben, ohne BaseStream
zu schließen. Close()
- und Dispose()
-Aufrufe ignoriert und alle anderen Vorgänge an den zugrunde liegenden BaseStream
weiterleitet. Das obige ist der detaillierte Inhalt vonWie kann ich verhindern, dass StreamWriter den zugrunde liegenden BaseStream schließt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!