当前位置:  开发笔记 > 编程语言 > 正文

做自己的自定义.NET事件处理循环

如何解决《做自己的自定义.NET事件处理循环》经验,为你挑选了1个好方法。

几年前,我读了一本书,描述了如何使用自己的处理器覆盖.NET中的默认事件"调度程序"实现.

    class foo {
       public event EventHandler myEvent;
       ...
    }

    ...
      myFoo.myEvent += myBar1.EventHandler;
      myFoo.myEvent += myBar2.EventHandler;

每当事件触发时,都会调用myBar1和myBar2处理程序.

我记得,这个循环的默认实现使用链表,只是迭代列表并按顺序调用EventHandler委托.

我的问题有两个:

    有人知道我正在读哪本书吗?

    为什么要覆盖默认实现(可能会在本书中回答)?

编辑:我所指的那本书确实是Jeffrey Richter通过C#的CLR



1> Jon Skeet..:

它可能是许多书籍或网络文章之一.

您可能想要更改订阅/取消订阅事件的方式有多种原因:

如果您有许多事件,其中许多可能无法订阅,您可能希望使用EventHandlerList来降低内存使用量

您可能希望记录订阅/取消订阅

您可能希望使用弱引用来避免订户的生命周期与您的生命相关联

您可能希望更改与订阅/取消订阅关联的锁定

我相信还有更多 - 这些都不在我的脑海里:)

编辑:另请注意,使用自定义方式处理订阅/取消订阅和使用自定义方式引发事件(可以调用GetInvocationList并保证所有处理程序都被调用,例如,无论例外情况)之间存在差异.

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有