이벤트에서 익명 메서드를 구독 취소하는 방법을 알고 싶습니다.익명 대리인에 대한 구독 취소
나는 이미 Unsubscribe anonymous method in C#을 확인했지만 내 경우는 조금 다릅니다.
익명 메소드에서 로컬 함수 변수에 액세스 중입니다. 당신은 익명의 대표로 그렇게하지 수
private static void Test(Object dependencyObject, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
{
if (dependencyPropertyChangedEventArgs.OldValue is ObservableCollection<object>)
{
(dependencyPropertyChangedEventArgs.OldValue as ObservableCollection<object>).CollectionChanged -=
(s, e) => SelectedItemsChanged(dependencyObject, e); // TO FIX event unbsubscription via anonymous delegate
}
if (dependencyPropertyChangedEventArgs.NewValue is ObservableCollection<object>)
{
(dependencyPropertyChangedEventArgs.NewValue as ObservableCollection<object>).CollectionChanged +=
(s, e) => SelectedItemsChanged(dependencyObject, e);
}
}
귀하의 케이스는 어떤 점에서 다른가요? 당신은 단순히 이것을 할 수 없습니다 - 그것은 효과가 없을 것입니다. http://stackoverflow.com/questions/1348150/how-do-i-unregister-anonymous-event-handler도 참조하십시오. –
차이점은 함수에 대한 변수 로컬 액세스를 제공해야한다는 것입니다. 명명 된 메서드를 사용하도록 선택한 경우이 변수를 전달하는 방법 – Tilak