2010-01-20 8 views
2

J'ai un objet BackgroundWorker que j'ai instancié pour exécuter un processus DB sur un thread d'arrière-plan de façon anynchrone. J'ai des gestionnaires d'événements pour DoWor k et RunWorkerCompleted.Gestionnaires d'événements BackgroundWorker

Je peux dire que le BackgroundWorker se débarrasse de lui-même parce que j'ai ajouté un MessageBox dans le gestionnaire d'événements Disposed.

Ma question est la suivante:

Est-il nécessaire de détacher les gestionnaires d'événements pour faire en sorte que la mémoire est nettoyé et qu'il n'y a pas de fuites de mémoire?

Répondre

6

Si un événement de l'éditeur est en cours de collecte, il n'est pas nécessaire de se désabonner. Vous devez uniquement vous désinscrire des événements si l'événement abonné (la cible du délégué du gestionnaire) doit devenir éligible pour la récupération de place avant que l'éditeur ne le fasse.