Я хотел бы знать, можно ли выполнить некоторый код C#, когда объект будет уничтожен?Получение уведомления об уничтожении объекта .NET?
Я пытался использовать IDiposable
, но мой метод Dispose
не вызван.
Спасибо.
Я хотел бы знать, можно ли выполнить некоторый код C#, когда объект будет уничтожен?Получение уведомления об уничтожении объекта .NET?
Я пытался использовать IDiposable
, но мой метод Dispose
не вызван.
Спасибо.
Возможно, вы сможете сделать это через Garbage Collection Notification
, что позволит вам почувствовать и ответить, когда приближается полная сборка мусора, и когда полный garbage collection has completed
.
Если объект создает экземпляр типа с финализацией, сохраняет ссылку на этот экземпляр, и не подвергает эту ссылку кому-либо, а затем, когда объект, содержащий единственную ссылку получает право на инкассо , финализатор этого последнего объекта будет выставлен в очередь для запуска при следующей возможности. Обратите внимание, что сборщик мусора не запускает финализаторы; он просто добавляет финализированные объекты в список вещей, финализаторы которых должны запускаться как можно скорее. Ни один объект, который находится в этом списке, ни какой-либо другой объект, к которому он имеет прямую или косвенную сильную ссылку, будет иметь право на сбор до тех пор, пока он не перестанет быть в этом списке. Если ваш финализируемый объект не содержит ссылки на объект, который содержит ссылку на него, и если у этого другого объекта нет собственного финализатора, этот объект перестанет существовать, как только ссылки на него отсутствуют; к моменту завершения финализатора последнего объекта прежний объект больше не будет существовать.
Что вы пытаетесь достичь? Вам нужно более активно контролировать время жизни ресурсов объекта? Это только для диагностики? Вы читали http://msdn.microsoft.com/en-us/library/66x5fx1b.aspx о деструкторах C#? – reuben
читайте о OOP, ctors, destructors –
У вас может быть финализатор (самое близкое к вопросу, но маловероятно, что вы хотите) ... Вы не можете получить уведомление, когда вызываете 'myObj = null' ... Пожалуйста, объясните, что вы на самом деле пытаются достичь. –