Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menghalang StreamWriter daripada Menutup BaseStream Dasar?

Bagaimanakah Saya Boleh Menghalang StreamWriter daripada Menutup BaseStream Dasar?

Barbara Streisand
Barbara Streisandasal
2025-01-12 08:03:43583semak imbas

How Can I Prevent StreamWriter from Closing the Underlying BaseStream?

Kendalian strim: Putuskan StreamWriter daripada BaseStream

Terdapat dilema apabila menggunakan StreamWriter dan kaedah Close() atau Dispose()nya: kaedah ini juga menutup asas BaseStreamnya. 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:

  • Elakkan daripada mengeluarkan StreamWriter: Jangan lepaskan StreamWriter, kosongkan sahaja. Ini akan mengeluarkan sebarang data penimbal tanpa menutup BaseStream.
  • Buat pembalut aliran : Laksanakan pembalut aliran tersuai yang mengabaikan panggilan 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn