내 뷰 중 하나에서 사용되는 범위 슬라이더 인 사용자 지정 컨트롤이 있습니다.WPF 컨트롤의 이벤트 구독 취소
생성자는 다음과 같습니다 : 그 이벤트 핸들러를 unscubscribe 수있는 방법을 때/I 모르는
EventHandler ReCalculateWidthsHandler;
public RangeSlider()
{
ReCalculateWidthsHandler = OnReCalculateWidths;
DependencyPropertyDescriptor.FromProperty(ActualWidthProperty, typeof(RangeSlider)).
AddValueChanged(this, ReCalculateWidthsHandler);
}
. 컨트롤에는 Dispose 메서드가 없습니다. 구독 한 이벤트를 구독 취소 할 수 있도록 컨트롤이 삭제/제거되고 있다는 알림을받을 수있는 방법이 있습니까?
이것은 더 일반적인 질문 일 수 있습니다. Control을 확장하는 사용자 지정 컨트롤을 감안할 때, 어떻게 처리되는지 알 수 있습니까?
감사합니다.
정기적으로 SizeChanged 이벤트에 가입하도록 변경 한 경우 컨트롤이 삭제 될 때 해당 이벤트의 구독을 취소 할 위치는 어디입니까? 내가 구독을 취소하지 않으면 내가 메모리 누출로 남아 있지 않을까? – Flack
아니요. 동일한 인스턴스의 이벤트에 대한 처리기를 구독하는 경우 외부 참조가 없습니다. –
아, 네. 그게 내 마음을 미끄러 져. 다른 컨트롤이 내 사용자 정의 컨트롤에 전달되었고 사용자 정의 컨트롤이 otherControl.SomeEvent + = SomeEventHandler와 같은 이벤트 중 하나에 가입했다고 가정 해 봅시다. 내 custom 컨트롤은 언제 그 이벤트로부터 구독을 취소하여 otherControl에 대한 참조가 유지되지 않습니까? – Flack