Like GuyFawkes, tôi muốn sử dụng MemoryStream để lưu trữ một lượng lớn dữ liệu, nhưng tiếp tục gặp phải các ngoại lệ 'hết bộ nhớ'.
Câu trả lời của TomTom là những gì tôi muốn làm - sử dụng một triển khai không yêu cầu một khối liền kề - nhưng tôi tự hỏi liệu đã có sẵn bản cài đặt miễn phí chưa, để tôi tự viết một bản?Có một triển khai MemoryStream nguồn mở không sử dụng bộ nhớ tiếp giáp không?
Có ai biết về việc thực hiện lại tốt, miễn phí MemoryStream có thể hoạt động với luồng lớn không?
EDIT:
giải pháp Các MemoryMappedFile là rất thú vị và tôi sẽ nhớ nó cho các dự án khác, tuy nhiên như Henk nói, nó strays quá xa trừu tượng mà MemoryStream đang hướng tới. Cụ thể, yêu cầu của một công suất đã biết.
Dữ liệu mà việc thay thế sẽ xử lý trong một số trường hợp là rất lớn, nhưng trong những trường hợp khác tương đối nhỏ (và không chúng tôi không biết nó sẽ đến khi quá muộn;)); hơn nữa, nhiều trường hợp của lớp sẽ tồn tại cùng một lúc. Cuối cùng, công việc cần thiết để sử dụng MemoryMappedFiles (để xác định kích thước phù hợp cho từng cái) sẽ tương đương với công việc triển khai giải pháp của TomTom.
Một vấn đề tương tự trong StringBuilder đã được sửa trong .NET 4 bằng cách thay đổi việc triển khai để sử dụng dây. Googling "memorystream rope" chỉ tạo ra các hit của các lập trình viên đang ở cuối của một. Hệ điều hành 64 bit là giải pháp trăm đô la. –
OK, tôi đã bỏ lỡ (bar Eric và dtb's là thú vị nhưng không hoàn toàn những gì tôi cần) câu trả lời như là một 'không' và do đó đã thực hiện nó bản thân mình. Nó không đặc biệt phức tạp nhưng tôi sẽ tải nó lên nếu ai đó có thể gợi ý nơi tốt nhất? – sebf
@HansPassant, dây thừng là một điều thú vị, Cảm ơn (Ngay cả khi Googling "memorystream rope" là không chính xác cảm hứng!) Đối với dự án của tôi mặc dù tôi chỉ cần dòng theo thứ tự hàng trăm megabyte, do đó, một danh sách đơn giản trong thực hiện của tôi sufficed. – sebf