C# EventHandler 订阅发布
时间: 2023-07-12 13:18:51 浏览: 131
C# 中的 EventHandler 是一种委托类型,用于实现订阅发布模式。订阅发布模式是一种常用的软件设计模式,它允许多个对象之间进行松耦合的通信,即发布者(Publisher)发布消息,订阅者(Subscriber)订阅消息并接收。
在 C# 中,使用 EventHandler 定义事件,可以通过 += 运算符订阅事件,也可以通过 -= 运算符取消订阅事件。当事件发生时,所有订阅者都会收到通知并执行其注册的处理程序。
例如,以下代码演示了如何定义一个事件并订阅它:
```
class Program
{
static void Main(string[] args)
{
MyPublisher publisher = new MyPublisher();
MySubscriber subscriber = new MySubscriber();
publisher.MyEvent += subscriber.OnMyEvent;
publisher.DoSomething();
}
}
class MyPublisher
{
public event EventHandler MyEvent;
public void DoSomething()
{
Console.WriteLine("Publisher is doing something...");
MyEvent?.Invoke(this, EventArgs.Empty);
}
}
class MySubscriber
{
public void OnMyEvent(object sender, EventArgs e)
{
Console.WriteLine("Subscriber is handling the event...");
}
}
```
在上面的代码中,MyPublisher 定义了 MyEvent 事件,并在 DoSomething 方法中触发该事件。MySubscriber 订阅了 MyEvent 事件,并在 OnMyEvent 方法中处理该事件。当调用 publisher.DoSomething() 方法时,会触发 MyEvent 事件并通知 MySubscriber 执行 OnMyEvent 方法。
需要注意的是,事件的订阅和取消订阅必须在相同的作用域中进行。在上面的代码中,订阅和取消订阅都是在 Main 方法中进行的。如果将订阅操作移到 MySubscriber 类中,将会得到编译错误。
阅读全文