2012-05-15 4 views
0

Windows Phone 7.5 (망고) :: 하드웨어 키를 사용하여 페이지에서 이전 페이지로 돌아가는 동안 페이지 2의 소멸자가 Page2의 소멸자가 발생하지 않는다고 가정 해 봅니다 . 응용 프로그램을 종료하는 동안 모든 통과 된 페이지의 소멸자가 실행 중입니다. 아무도, 제발 도와주세요?페이지 소멸자가 실행되지 않습니다.

+0

왜 필요한가요? – besworland

+0

C#에서 소멸자는'Object.Finalize' 메서드를 오버라이드합니다. 관리되지 않는 리소스를 해제해야하는 경우에만이 메서드를 재정의해야합니다. 또한 finalizer는 가비지 수집 중에 객체를 회수 할 때만 호출됩니다. 응용 프로그램 논리를 파이널 라이저/소멸자에 기초해서는 안됩니다. –

답변

0

사이트에서 OnBackKey 이벤트를 감지하여 탐색 한 경우 다시 확인할 수 있습니다. 그런 다음 원하는 소멸자와 동일한 기능을 가져야합니다.

0

가비지 수집기가 해당 페이지를 수집하지 않는다는 문제가 있다면 on on navigated from 이벤트의 모든 이벤트를 구독 취소하지 않았기 때문일 가능성이 큽니다.

0

destructopr이 실제로 실행되지 않는 경우 (*), 뭔가가 참조를 보유하고 있기 때문입니다. 이고르가 말한 것처럼, 아마 사건 일 것입니다.

또는 OnBackKeyPress를 재정의하고 돌아가는 대신 Page1로 이동합니다. 이 경우 배낭은 Page2에 대한 참조를 유지합니다.

(*) 소멸자는 GarbageCollector가 실행되기 전에 호출된다는 점에 유의하십시오. 코드가 완벽하더라도 페이지 1 -> Page2 탐색이 필요할 수도 있습니다.

0

정적 필드가있는 클래스 인스턴스가 없는지 확인하십시오. 가장 친한 친구는 디버거입니다. 소멸자의 호출을 방지 할 수있는 모든 변수에 시계를 추가 한 후

if (Debugger.IsAttached) 
{ 
    Debugger.Break(); 
} 

backKeyPress 이벤트의 상단에이 코드를 넣어.

관련 문제