2010-10-20 34 views

Trả lời

19

Không, không có cơ hội. Nó an toàn để làm - các MemoryStream giữ một tham chiếu mạnh mẽ đến mảng byte.

tôi sẽ xem liệu tôi có thể tìm thấy bất kỳ tài liệu về bảo đảm ...

EDIT: Sắp xếp của ...

Từ MemoryStream.Close:

Bộ đệm vẫn còn có sẵn trên một MemoryStream khi luồng đã bị đóng.

Phải thừa nhận rằng không đảm bảo nó cho Dispose, nhưng đó là tài liệu để gọi Stream.Close.

MemoryStream.Dispose(bool)có thể sau đó được ghi đè để giải phóng mảng, nhưng không theo kinh nghiệm của tôi và nó sẽ là thay đổi đột phá tại thời điểm này.

+0

Tôi không tìm thấy bất kỳ nội dung nào trong tài liệu, nhưng chúng tôi có các thử nghiệm trong Mono cho điều này và mã hoạt động trong trường hợp này. Btw, không cần phải gọi ms.Close(). – Gonzalo

+0

Chỉ cần lưu ý: Tài liệu .NET 4.0 cho MemoryStream.Close (http://msdn.microsoft.com/en-us/library/system.io.stream.close%28v=vs.100%29.aspx) * không * chứa "Bộ đệm vẫn có sẵn trên MemoryStream khi luồng đã bị đóng." tuyên bố. Làm tôi băn khoăn liệu họ có làm thay đổi hành vi thay đổi không. –

+0

@scottmarlowe: Đó là tài liệu cho Stream.Close. Có vẻ như họ vừa ngừng cung cấp "tài liệu ghi đè" cho MemoryStream.Close. Thay đổi hành vi thực tế có thể đã phá vỡ rất nhiều mã. –

Các vấn đề liên quan