Whenever you add a delegate to an event handler, you should remove it later, right? So if you attach an anonymous method to an event, does this create an event handler leak since you can’t later remove it? This code sample from http://msdn.microsoft.com/en-us/library/0yw3tz5k%28VS.80%29.aspx seems to imply that this an okay practice though.
// Create a handler for a click event
button1.Click += delegate(System.Object o, System.EventArgs e)
{ System.Windows.Forms.MessageBox.Show("Click!"); };
Is this really an okay practice?
Not necessarily, no. Often you want the event handler to stay valid for as long as the event itself can be raised – that’s certainly very common with UIs.
Absolutely, so long as you don’t need to unhook the handler. Think about the point at which you’d unhook the event handler. If it’s “when the form (or button, or whatever) is elegible for garbage collection” then what benefit is there in removing the handler? Just let it be garbage collected with the form…