views:

132

answers:

1

I have a BackgroundWorker object that I instantiated to perform a DB process on a background thread ansynchronously. I have event handlers for DoWork and RunWorkerCompleted.

I can tell that the BackgroundWorker is disposing of itself because I added a message box into the Disposed event handler.

My question is this:

Is it necessary to detach the event handlers to ensure that the memory is cleaned up and that there are not memory leaks?

+3  A: 

If an event publisher is being garbage collected, then there's no need to unsubscribe. You only need to unsubscribe from events if the event subscriber (the target of the handler delegate) needs to become eligible for garbage collection before the publisher does.

Jon Skeet