C#声明和引发事件
例子
宣布事件
您可以使用任何语法class或struct使用以下语法来声明事件:
public class MyClass { //声明MyClass事件 public event EventHandler MyEvent; //引发MyEvent事件 public void RaiseEvent() { OnMyEvent(); } }
有一种用于声明事件的扩展语法,其中您可以保存事件的私有实例,并使用add和set访问器定义公共实例。语法与C#属性非常相似。在所有情况下,都应首选上面演示的语法,因为编译器会发出代码来帮助确保多个线程可以安全地向类中的事件添加和删除事件处理程序。
引发事件
private void OnMyEvent() { EventName?.Invoke(this, EventArgs.Empty); }
private void OnMyEvent() { //对EventName使用本地,因为另一个线程可以修改 //当我们检查它是否为null以及 //引发事件。 var eventName = EventName; //如果eventName==null,则表示没有事件订阅者, //因此,我们无法提出该事件。 if(eventName != null) eventName(this, EventArgs.Empty); }