Kendalian strim: Putuskan StreamWriter daripada BaseStream
Terdapat dilema apabila menggunakan StreamWriter
dan kaedah Close()
atau Dispose()
nya: kaedah ini juga menutup asas BaseStream
nya. Masalah timbul jika komponen luaran masih perlu mengakses StreamWriter
selepas BaseStream
menyelesaikan tugasnya.
Untuk menyelesaikan masalah ini, .NET Framework 4.5 dan lebih baru menyediakan pembina StreamWriter
terbeban yang membolehkan anda menentukan bahawa BaseStream
kekal terbuka:
<code class="language-csharp">StreamWriter(Stream stream, Encoding encoding, bool leaveOpen)</code>
Pembina ini menerima parameter ketiga leaveOpen
, yang lalai kepada false
. Dengan menetapkan leaveOpen
kepada true
, anda memastikan bahawa apabila StreamWriter
ditutup atau dilepaskan, BaseStream
kekal terbuka.
Dalam versi terdahulu Rangka Kerja .NET (sebelum 4.5), memandangkan pembina terlebih beban ini tidak wujud, kaedah berikut boleh digunakan:
StreamWriter
, kosongkan sahaja. Ini akan mengeluarkan sebarang data penimbal tanpa menutup BaseStream
. Close()
dan Dispose()
sambil memproksi semua operasi lain ke BaseStream
yang mendasari. Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghalang StreamWriter daripada Menutup BaseStream Dasar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!