引发多个事件

如果您的类引发多个事件,并且您按引发事件中的说明对这些事件进行编程,编译器将为每个事件委托实例生成一个字段。 如果事件的数目很大,则一个委托一个字段的存储成本可能无法接受。 对于这些情况,.NET Framework 提供一个称为事件属性的构造(Visual Basic 2005 中的自定义事件),此构造可以和(您选择的)另一数据结构一起用于存储事件委托。

事件属性由带事件访问器的事件声明组成。 事件访问器是您定义的方法,用以允许事件委托实例添加到存储数据结构或从存储数据结构移除。 请注意,事件属性要比事件字段慢,这是因为必须先检索每个事件委托,然后才能调用它。 这是内存和速度之间的折中方案。 如果您的类定义了许多不常引发的事件,那么您可能要实现事件属性。 Windows 窗体控件和 ASP.NET 服务器控件使用事件属性而不是事件字段。

请参见

任务

如何:使用事件属性处理多个事件

如何:声明自定义事件以节省内存 (Visual Basic)

参考

System.ComponentModel.EventHandlerList

System.Web.UI.Control.Events

其他资源

处理和引发事件