2013-12-14 5 views
0

개체가 파괴 될 때 C# 코드를 실행할 수 있는지 알고 싶습니다..NET 객체가 파괴 될 때 알림 받기?

IDiposable을 사용하려고했지만 내 Dispose 메서드가 호출되지 않습니다.

감사합니다.

+4

무엇을하려고합니까? 객체의 리소스 수명을보다 적극적으로 제어해야합니까? 진단 전용입니까? C# 소멸자에 http://msdn.microsoft.com/en-us/library/66x5fx1b.aspx를 읽으셨습니까? – reuben

+0

OOP, ctors, destructors에 대한 내용 –

+0

finalizer를 사용할 수 있습니다. (질문에 가장 가까운 것이지만 원하는 것은 없을 것입니다.) ... 'myObj = null'이 호출 될 때 알림을받을 수 없습니다. 실제로 달성하려고합니다. –

답변

0

Garbage Collection Notification을 통해이 작업을 수행 할 수 있습니다. 전체 가비지 수집이 다가오고 전체가 garbage collection has completed 일 때 감지하고 응답 할 수 있습니다. 객체가 파이널 라이저와 형식의 인스턴스를 만들고 해당 인스턴스에 대한 참조를 유지하고, 사람에게 그 참조를 노출하지 않는 경우

Garbage Collection Notifications

0

, 다음 유일한 참조를 보유하는 개체가 컬렉션의 대상이되면 그 객체의 finalizer는 다음 기회에 실행되도록 대기열에 포함됩니다. 가비지 컬렉터는 파이널 라이저를 실행하지 않습니다. finalizer가 실용적인대로 실행되어야하는 것들의 목록에 finalizable 객체를 추가하기 만합니다. 해당 목록에있는 개체도 직접 또는 간접적으로 강력한 참조를 보유하고있는 다른 개체도 해당 목록에 포함되지 않을 때까지 수집 대상이됩니다. finalizable 오브젝트가 참조를 보유하는 오브젝트에 대한 참조를 보유하지 않고 다른 오브젝트가 자체의 finalizer를 가지지 않으면 해당 오브젝트는 참조가 없으면 존재하지 않게됩니다. 후자의 객체의 finalizer가 실행될 때까지, 이전의 객체는 더 이상 존재하지 않을 것이다.

관련 문제