Généralement, nous utilisons ce code:
public event EventHandler UpdateErrorIcons { add; remove; }
3 Réponses :
Oui. Débarrassez-vous du {Ajouter; supprimer; } code> partie et le champ de délégué de support et vous êtes GOLDEN:
private EventHandler _updateErrorIcons;
public event EventHandler UpdateErrorIcons
{
add
{
EventHandler current, original;
do
{
original = _updateErrorIcons;
EventHandler updated = (EventHandler)Delegate.Combine(original, value);
current = Interlocked.CompareExchange(ref _updateErrorIcons, updated, original);
}
while (current != original);
}
remove
{
// Same deal, only with Delegate.Remove instead of Delegate.Combine.
}
}
Et le champ de support. (En fait, op, vous trouverez que beaucoup de gens ne sont même pas au courant des Ajouter code> et
supprimer code> accesseurs d'événements.)
Nous utilisons l'ADD & Supprimer dans certains événements pour la synchronisation.
@Carra: En fonction de la version du compilateur C # que vous utilisez, vous n'avez peut-être pas à vous soucier de cela: blogs.msdn.com/b/cburows/archive/2010/03/05 / ...
Bon de savoir. Je me souviens de lire les meilleures pratiques pour l'événement - Sécurité des threads lorsque nous étions toujours sur le cadre 2.0.
yourObbject.UpdateErrorIcons += YourFunction;
Par exemple: P> Ajouter {} code> et
Supprimer {} code> ne sont utilisés que dans des cas particuliers où vous devez gérer manuellement les connecteurs d'événements. US Sere Moritals Normalement utilisez-vous normalement
Evénement public EventHandler UpdeckerErroricons; Code> Où "EventHandler" est le délégué de choix.
public void InvokeMyEvent(string param1)
{
MyEventDelegate myEventDelegate = MyEvent;
if (myEventDelegate != null)
myEventDelegate(this, param1);
}
Oui, nous l'utiliserions généralement pour ajouter une synchronisation plus tard.
@Carra: À moins que je ne me trompe, la mise en œuvre par défaut de ajoutez code> et
supprimer code> dans les dernières versions de la structure .NET incluent la synchronisation.
C'est vraiment drôle, la plupart des gens n'ont même jamais entendu parler du code étendu :)
Ouais, même si j'ai vu des gens le faire, je n'utiliserai jamais personnellement cela, le compilateur l'ajoute plus tard.