如何:实现自定义事件访问器(C# 编程指南)

更新:2007 年 11 月

事件是特殊的多路广播委托,仅能从声明该事件的类中调用。客户端代码通过提供对引发事件时要调用的方法的引用来订阅事件。这些方法通过事件访问器添加到委托的调用列表中,事件访问器类似于属性访问器,不同之处在于事件访问器被命名为 add 和 remove。在大多数情况下都不需要提供自定义的事件访问器。如果您在代码中没有提供自定义的事件访问器,编译器会自动添加事件访问器。但在某些情况下,您可能需要提供自定义行为。在主题如何:实现接口事件(C# 编程指南)中就演示了这样一种情况。

示例

下面的示例演示如何实现自定义的 add 和 remove 事件访问器。虽然可以替换这些访问器内的任何代码,但建议您在添加或移除新的事件处理程序方法之前先锁定该事件。

event EventHandler IDrawingObject.OnDraw
        {
            add
            {
                lock (PreDrawEvent)
                {
                    PreDrawEvent += value;
                }
            }
            remove
            {
                lock (PreDrawEvent)
                {
                    PreDrawEvent -= value;
                }
            }
        }

请参见

参考

事件(C# 编程指南)

event(C# 参考)