Tôi biết rằng tất cả các đối tượng thực hiện IDisposable
nên được xử lý ngay sau khi chúng không còn cần thiết để giải phóng bộ nhớ được sử dụng bởi tài nguyên không được quản lý của chúng.Tôi có nên bận tâm về việc vứt bỏ các vật thể chia sẻ suốt đời của quá trình không?
Câu hỏi của tôi liên quan đến các đối tượng mà tôi biết cho thực tế sẽ hoạt động cho đến khi quá trình lưu trữ được kết thúc. Nó sẽ tạo ra bất kỳ sự khác biệt nào nếu tôi vứt bỏ chúng hay không? Có cơ hội nào của bộ nhớ không được giải phóng khi quá trình chết không? Điều gì về các đối tượng GDI? Các xử lý GDI sẽ được giải phóng khi quá trình chết ngay cả khi chúng không được xử lý?
Tôi hoàn toàn hiểu rằng thực tiễn tốt là vất bỏ mọi đối tượng. Tôi hỏi hoàn toàn tò mò.
http://blogs.msdn.com/b/kimhamil/archive/2008/11/05/when-to-call-dispose.aspx Wow, mọi người đã nhảy vào tôi như một con chó trên con mèo 3 chân để nói không được vứt bỏ. Tôi đã tìm thấy nó đau hơn nó giúp. Không nên vòng đời được quản lý bởi một container, không mã cứng ??? – CrazyDart
@CrazyDart Cảm ơn, đó là một đọc lặp đi lặp lại, mặc dù nó đề cập chủ yếu với câu hỏi "Nên đối tượng của loại X thường được xử lý". Câu hỏi cụ thể hơn tôi đang cố gắng trả lời là "nên đối tượng của loại X, mà nên ** chắc chắn ** bình thường được xử lý, được xử lý ngay cả khi nó chia sẻ suốt đời của quá trình?" – Rotem
@CrazyDart Khi nào có Dispose làm tổn thương bạn? Liên kết mà bạn đưa ra đưa ra một số ví dụ về khi không được gọi Dispose, nhưng quy tắc chung vẫn nên gọi là trừ khi bạn có lý do chính đáng. – hvd