Là discussed before, khi BinaryReader hoặc BinaryWriter bị đóng, luồng cơ bản của nó cũng bị đóng (aargh). Hãy xem xét tình huống này: một thông thường R
được chuyển qua MemoryStream, nói M
; Tôi muốn viết một số công cụ để M
và sau đó chuyển nó đến một thói quen khác để xử lý nhiều hơn (không nhất thiết phải viết). Để thuận tiện, tôi muốn bọc M
trong BinaryWriter để viết. Sau khi viết, tôi đã hoàn thành với BinaryWriter nhưng không phải với M
.Làm cách nào để "ngã" một luồng trong .NET?
void R(MemoryStream M)
{
using (B = new BinaryWriter(M))
{
// write some stuff using B
}
S(M); // now pass M to another routine for further processing
}
Nhưng, tôi không thể bỏ BinaryStream mà không đóng M
.
Hỏi: Có cách nào để thực hiện bất kỳ thao tác nào sau đây không?
- trích xuất các byte tiềm ẩn [] từ một MemoryStream,
- bản sao một Stream
- mở lại một Stream sau khi nó được đóng
Tôi không biết C#, nhưng trong Java, bạn chỉ đơn giản là từ bỏ mà không đóng BinaryWriter. Không phải việc sử dụng {...} xây dựng lực lượng có đóng không? Sau đó, không sử dụng cấu trúc đó! –
P.S. Nhưng bạn cần phải đảm bảo bạn tuôn ra BinaryWriter trước khi bạn từ bỏ nó. –