Pour toute personne intéressée, vous pouvez ajouter et supprimer un gestionnaire d'événements anonyme comme celui-ci
public class Musician
{
public void TuneGuitar()
{
Metronome metronome = new Metronome();
EventHandler<EventArgs> handler = null;
handler = (sender, args) =>
{
// Tune guitar
// ...
// Unsubscribe from tick event when guitar sound is perfect
metronome.Tick -= handler;
};
// Attach event handler
metronome.Tick += handler;
}
}
public class Metronome
{
event EventHandler<EventArgs> Tick;
}
MISE À JOUR: En C# 7.0 nous avons des supports pour local functions donc la méthode TuneGuitar
peut maintenant être écrite comme:
public void TuneGuitar()
{
Metronome metronome = new Metronome();
void handler = (object sender, EventArgs args) =>
{
// Tune guitar
// ...
// Unsubscribe from tick event when guitar sound is perfect
metronome.Tick -= handler;
};
// Attach event handler
metronome.Tick += handler;
}
double possible de [désinscrire méthode anonyme en C#] (https://stackoverflow.com/questions/183367/unsubscribe-anonymous-method-in-c-sharp) –