Aller au contenu

Abonnement et désabonnement

Contexte : Les abonnés ajoutent leurs gestionnaires d’événements avec += et les retirent avec -=. Cela évite les fuites de mémoire lorsque l’abonné survit à l’éditeur.

Button button = new Button();
button.Clicked += OnButtonClicked; // abonnement
private void OnButtonClicked(object sender, EventArgs e)
{
Console.WriteLine("Bouton cliqué");
}
button.Clicked -= OnButtonClicked; // désabonnement
button.Clicked += (sender, e) => Console.WriteLine("Cliqué");
// Se désabonner d’une lambda est délicat ; stockez le délégué dans une variable.
EventHandler handler = (s, e) => Console.WriteLine("Cliqué");
button.Clicked += handler;
button.Clicked -= handler;

Pattern Dispose : Dans les applications de longue durée, désabonnez‑vous toujours des événements dans la méthode Dispose pour éviter les fuites de mémoire.

Exemple : Dans WinForms, les contrôles se désabonnent des événements lorsqu’ils sont supprimés.