在C#中,事件是一种允许对象之间进行通信的机制。当一个对象(通常称为发布者或事件发布者)触发一个事件时,所有订阅了该事件的对象(称为订阅者或事件接收者)都会收到通知并执行相应的操作。要处理多个订阅者,你可以使用以下方法:
System.EventArgs
的自定义类。例如:public class CustomEventArgs : EventArgs
{
public string Message { get; set; }
public CustomEventArgs(string message)
{
Message = message;
}
}
event
关键字定义一个事件。例如:public class EventPublisher
{
// 定义一个事件,使用CustomEventArgs作为参数
public event EventHandler<CustomEventArgs> CustomEvent;
// 触发事件的公共方法
public void RaiseEvent(string message)
{
CustomEvent?.Invoke(this, new CustomEventArgs(message));
}
}
public class EventSubscriber
{
// 定义一个处理事件的委托
public delegate void CustomEventHandler(object sender, CustomEventArgs e);
// 定义一个事件,使用CustomEventHandler作为参数
public event CustomEventHandler CustomEvent;
// 处理事件的方法
public void OnCustomEvent(string message)
{
CustomEvent?.Invoke(this, new CustomEventArgs(message));
}
}
public class Program
{
public static void Main(string[] args)
{
EventPublisher publisher = new EventPublisher();
EventSubscriber subscriber1 = new EventSubscriber();
EventSubscriber subscriber2 = new EventSubscriber();
// 将订阅者1的事件订阅到发布者的事件上
publisher.CustomEvent += subscriber1.OnCustomEvent;
// 将订阅者2的事件订阅到发布者的事件上
publisher.CustomEvent += subscriber2.OnCustomEvent;
// 触发事件
publisher.RaiseEvent("Hello, subscribers!");
}
}
在这个例子中,当publisher
触发CustomEvent
时,subscriber1
和subscriber2
都会收到通知并执行相应的操作。