Tôi đã cân nhắc tại sao chúng tôi khuyên nên không phát hành tài nguyên được quản lý bên trong hoàn thiện. Nếu bạn thấy ví dụ mã số tại http://msdn.microsoft.com/en-us/library/system.gc.suppressfinalize.aspx và tìm kiếm chuỗi "Vứt bỏ (bool disposing) thực hiện trong hai trường hợp riêng biệt" và đọc nhận xét đó, bạn sẽ hiểu ý tôi.Tại sao "Phương pháp hoàn thiện không nên tham chiếu đến bất kỳ đối tượng nào khác"?
Chỉ có khả năng tôi có thể nghĩ là nó có thể có một cái gì đó để làm với thực tế là nó không thể dự đoán khi finalizer sẽ được gọi. Có ai biết câu trả lời đúng không?
cảm ơn, Mishal
Nhưng nếu đối tượng của tôi (hiện đang được hoàn thành) đang giữ một tham chiếu đến đối tượng được quản lý khác, tôi nghĩ CLR đảm bảo rằng đối tượng được tham chiếu vẫn còn hoạt động ở giai đoạn này. (im chỉ đoán bởi khái niệm thu gom rác, đó là đối tượng asan dài được tham chiếu nó sẽ không bị xóa) – mishal153
Nhưng nếu đối tượng của tôi (hiện đang được hoàn thành) đang giữ một tham chiếu đến đối tượng được quản lý khác, tôi nghĩ CLR đảm bảo rằng đối tượng được tham chiếu vẫn còn hoạt động ở giai đoạn này. (im chỉ đoán bởi các khái niệm về bộ sưu tập rác, đó là đối tượng asan dài được tham chiếu nó sẽ không được làm sạch). Vì vậy, nó sẽ là một lỗi CLR tôi nghĩ rằng nếu đối tượng tham chiếu đã được hoàn thành trước khi đối tượng cha mẹ được hoàn thành. – mishal153
Miễn là một đối tượng là * có thể truy cập *, nó sẽ không bị xóa. Nếu đối tượng của bạn đang được hoàn thiện, thì nó không thể truy cập được, và bất kỳ tham chiếu nào mà nó đang nắm giữ không phải là (và do đó không được tính). – cHao