2013-12-14 4 views
0

Я хотел бы знать, можно ли выполнить некоторый код C#, когда объект будет уничтожен?Получение уведомления об уничтожении объекта .NET?

Я пытался использовать IDiposable, но мой метод Dispose не вызван.

Спасибо.

+4

Что вы пытаетесь достичь? Вам нужно более активно контролировать время жизни ресурсов объекта? Это только для диагностики? Вы читали http://msdn.microsoft.com/en-us/library/66x5fx1b.aspx о деструкторах C#? – reuben

+0

читайте о OOP, ctors, destructors –

+0

У вас может быть финализатор (самое близкое к вопросу, но маловероятно, что вы хотите) ... Вы не можете получить уведомление, когда вызываете 'myObj = null' ... Пожалуйста, объясните, что вы на самом деле пытаются достичь. –

ответ

0

Возможно, вы сможете сделать это через Garbage Collection Notification, что позволит вам почувствовать и ответить, когда приближается полная сборка мусора, и когда полный garbage collection has completed.

Garbage Collection Notifications

0

Если объект создает экземпляр типа с финализацией, сохраняет ссылку на этот экземпляр, и не подвергает эту ссылку кому-либо, а затем, когда объект, содержащий единственную ссылку получает право на инкассо , финализатор этого последнего объекта будет выставлен в очередь для запуска при следующей возможности. Обратите внимание, что сборщик мусора не запускает финализаторы; он просто добавляет финализированные объекты в список вещей, финализаторы которых должны запускаться как можно скорее. Ни один объект, который находится в этом списке, ни какой-либо другой объект, к которому он имеет прямую или косвенную сильную ссылку, будет иметь право на сбор до тех пор, пока он не перестанет быть в этом списке. Если ваш финализируемый объект не содержит ссылки на объект, который содержит ссылку на него, и если у этого другого объекта нет собственного финализатора, этот объект перестанет существовать, как только ссылки на него отсутствуют; к моменту завершения финализатора последнего объекта прежний объект больше не будет существовать.

Смежные вопросы