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