using System;
namespace EventHandlerExample
{
// 定义一个事件的委托类型
public delegate void CustomEventHandler(object sender, EventArgs e);
// 发布者类,包含事件定义
public class Publisher
{
// 定义事件
public event CustomEventHandler MyEvent;
// 触发事件的方法
public void TriggerEvent()
{
Console.WriteLine("事件即将触发...");
OnMyEvent(EventArgs.Empty);
}
// 保护方法用于触发事件
protected virtual void OnMyEvent(EventArgs e)
{
MyEvent?.Invoke(this, e); // 检查是否有订阅者,然后调用事件处理程序
}
}
// 订阅者类,包含事件处理程序
public class Subscriber
{
private Publisher _publisher;
public Subscriber(Publisher publisher)
{
_publisher = publisher;
// 订阅事件
_publisher.MyEvent += HandleMyEvent;
}
// 事件处理程序
private void HandleMyEvent(object sender, EventArgs e)
{
Console.WriteLine("事件已触发,处理程序正在执行...");
}
}
class Program
{
static void Main(string[] args)
{
Publisher publisher = new Publisher();
Subscriber subscriber = new Subscriber(publisher);
// 触发事件
publisher.TriggerEvent();
Console.ReadLine();
}
}
}
object sender
和 EventArgs e
。这是事件处理程序的标准签名。MyEvent
) 和触发事件的方法 (TriggerEvent
)。OnMyEvent
是一个保护方法,用于安全地触发事件。Publisher
的事件,并定义了事件处理程序 (HandleMyEvent
) 来响应事件。Main
方法中,创建了 Publisher
和 Subscriber
的实例,并通过 publisher.TriggerEvent()
触发事件。通过这种方式,当 Publisher
触发事件时,Subscriber
中的事件处理程序会自动执行。
上一篇:c#连接oracle数据库
下一篇:c# default
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站