Je voudrais confirmer quelque chose - quand j'enregistrer une méthode en tant qu'abonné à un événement le long chemin, comme ceci:Différence entre l'enregistrement et l'enregistrement délégué méthode nommée pour l'événement
_serviceContext.ReadingEntity += new EventHandler<ReadingWritingEntityEventArgs>(_serviceContext_ReadingEntity);
Je dois ONU- inscrire cette méthode de l'abonnement de l'événement si je ne veux pas continuer à être appelé quand est tiré, comme celui-ci l'événement:
_serviceContext.ReadingEntity -= new EventHandler<ReadingWritingEntityEventArgs>(_serviceContext_ReadingEntity);
quand j'enregistrer un délégué en tant qu'abonné à un événement, comme suit:
public guy ThisMethod()
{
_serviceContext.ReadingEntity += delegate(object sender, ReadingWritingEntityEventArgs e)
{
};
}
Il n'existe aucun moyen de désinscrire ce délégué de la liste d'abonnés de cette méthode. Je suppose donc que la portée de cet enregistrement est limitée à la méthode dans laquelle il est enregistré - ie si l'événement _serviceContext.ReadingEntity a été déclenché dans une méthode appelée par ThisMethod, cet enregistrement serait déjà expiré et le code dans le délégué ne serait pas courir. Est-ce correct?
Merci!
p.s. Je me rends compte que la première "longue" façon d'enregistrer un gestionnaire d'événements a également des limites de portée, mais je suis un peu flou sur ce point. Ma question principale, cependant, est de savoir si oui ou non l'inscription du délégué se déroulera en dehors de la méthode ci-dessus.
Merci Zaid. Le code que vous avez collé était proche mais n'a pas été compilé - j'ai dû utiliser un EventHandler plutôt qu'une Action. –
@AndrewBSchultz édité en conséquence .. –