2012-05-07 4 views
2

Je cherche à implémenter une logique supplémentaire lorsque des gestionnaires d'événements sont ajoutés ou supprimés à un événement. Je suis conscient que l'implémentation par défaut dans .net a récemment été modifiée. Je souhaite que mon implémentation reste aussi proche que possible de l'implémentation par défaut.par défaut ajouter/supprimer l'implémentation

Quelqu'un peut-il me diriger vers/fournir quelque chose qui montre comment le compilateur implémente des événements?

+0

désolé, il est clair pas ce que vous demandons .. comment mettre en œuvre quelque chose "comme compilateur" le fait? – Tigran

+0

Le compilateur exécute la magie pour implémenter des événements. J'aimerais savoir comment cette «magie» se traduit par du code qui peut être implémenté dans les gestionnaires 'add' /' remove' * qui peuvent être implémentés dans le code *. – spender

+0

Ce n'est pas de la magie; c'est juste compliqué. – SLaks

Répondre

2

Voir this series of blog posts.

Dans C# < 4, il a utilisé des opérations déléguées simples dans lock s.

En C# 4+, il utilise un algorithme sans verrou en appelant le Interlocked.CompareExchange dans une boucle; Regardez-le dans un décompilateur pour plus de détails.

Si vous êtes sûr que vos classes jamais être utilisé sur plusieurs threads, vous n'avez pas besoin de tout cela; vous pouvez simplement utiliser l'arithmétique déléguée non synchronisée.

+0

Merci. BTW, votre blog est en panne. – spender

+0

Beaucoup de discussions ici. J'ai besoin de le faire correctement. – spender

+0

@spender: Etes-vous sûr? [Mon blog] (http://slaks.net) me va bien. – SLaks

Questions connexes