How to unsubscribe from an event which uses a lambda expression?

First of all… yes its a good way of doing it, it’s clean, small form and easy to read & understand… the caveat of course is “Unless you later want to unsubscribe”.

I believe Jon Skeet pointed out before that
“the specification explicitly doesn’t guarantee the behaviour either way when it comes to equivalence of delegates created with anonymous methods.”

So if you need to unsubscribe from the event at a later time, you’d be best to actually create a delegate instance so you can hang onto the reference for later.

var myDelegate = delegate(sender, e){UpdateMyUI()};

myObservableCollection.CollectionChanged += myDelegate;

myObservableCollection.CollectionChanged -= myDelegate;

Leave a Comment