默认事件添加/删除实现
我想在事件处理程序添加或删除事件时实现一些额外的逻辑。
我知道.net中的默认实现最近发生了变化。
我想让我的实现尽可能接近默认实现。
任何人都可以指出/提供一些显示compliler如何实现事件的东西?
查看这一系列博客文章 。
在C#<4中,它在lock
使用了简单的委托操作。
在C#4+中,它通过在循环中调用Interlocked.CompareExchange
来使用更高级的无锁算法; 在反编译器中查看它以获取更多细节。
如果您确定您的类永远不会在多个线程上使用,那么您不需要其中任何一个; 你可以简单地使用非同步的委托算法。
不确定它是否正是您正在寻找的,但本文展示了添加删除处理程序的一些.NET内部。 (还显示了如何获取和操作这些处理程序)
http://www.codeproject.com/Articles/308536/How-to-copy-event-handlers-from-one-control-to-ano
如果你想在那里添加一些逻辑,你可能会发现这篇文章很有趣……