默认事件添加/删除实现

时间:2012-05-07 15:40:25

标签: c# .net events .net-4.0 .net-4.5

我希望在向事件添加或删除事件处理程序时实现一些额外的逻辑。

我知道.net中的默认实现最近发生了变化。

我希望我的实现尽可能接近默认实现。

有人能指出/提供一些能说明编译器如何实现事件的内容吗?

2 个答案:

答案 0 :(得分:2)

请参阅this series of blog posts

在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

如果你想在那里添加一些逻辑,你可能会觉得这篇文章很有趣......