2008-09-04 6 views
2

언제 이것이 호출됩니까? 더 구체적으로, 나는 창을 닫을 때 핸들을 놓을 수있는 방법을 만들고있다. 정상적인 win32에서 나는 wm_close 동안 그것을 할 것입니다 - DestroyHandle입니다. 그물 동등한?Control.DestroyHandle은 언제 호출됩니까?


나는 윈도우가 자신을 처리 파괴하고 싶지 않아 - 내 컨트롤은 다른 개체에 대한 이벤트 및 내 컨트롤이 파괴 될 때, 나는 그 사건을 듣고 중지 할에 대해 듣고있다. 예 : 일반적으로 DestroyHandleDispose 방법으로 호출되고

void Dispose(bool disposing) { 
    otherObject.Event -= myEventHandler; 
} 

답변

3

. 따라서 리소스 누출을 방지하기 위해 모든 컨트롤을 삭제해야합니다.

2

Dispose은 언제나 그런 것은 아니지만 DestroyHandle입니다. 상위 창을 닫으면 Windows가 모든 하위 창을 삭제합니다. 이 상황에서 DisposeDestroyHandle을 호출하지 않습니다 (이미 파괴 되었기 때문에). 즉, DestroyHandle이 윈도우를 파괴하기 위해 호출되며, 윈도우가 파괴 될 때 호출되지 않습니다.

해결 방법은 OnHandleDestroyed 또는 Dispose입니다. 나는 Dispose을 선택합니다.

+0

호기심에서 벗어나서 왜 자신을 처리하려고합니까? 내 연습에서는 DestroyHandle을 명시 적으로 호출해야하는 경우를 기억하지 못합니다. 당신 사건을 설명해 주시겠습니까? – aku

관련 문제