日常生活的交流与学习

首页 新随笔 联系 管理

event_learn\Program.cs

using System;

// 定义一个发布者类,它有一个 MyEvent 事件
public class Publisher
{
    // 声明一个事件,使用 EventHandler 委托类型
    public event EventHandler MyEvent;

    // 定义一个触发事件的方法
    protected virtual void OnMyEvent()
    {
        // 检查事件是否有订阅者,如果有,就调用它们,并传递一个包含事件信息的对象
        MyEvent?.Invoke(this, EventArgs.Empty);
    }

    // 定义一个模拟的操作方法
    public void DoSomething()
    {
        // 在这里执行一些操作
        Console.WriteLine("Publisher is doing something.");

        // 在操作完成后,调用触发事件的方法
        OnMyEvent();
    }
}

// 定义一个订阅者类,它有一个 HandleEvent 方法,它订阅了 MyEvent 事件
public class Subscriber
{
    // 定义一个事件处理程序方法,其签名与事件的委托类型匹配
    public void HandleEvent(object sender, EventArgs e)
    {
        // 在这里添加事件处理逻辑
        Console.WriteLine("Subscriber received event from {0}  ,  {1}.", sender, e);
    }
}


class Program
{
    static void Main(string[] args)
    {
        // 创建一个发布者对象
        Publisher publisher = new Publisher();

        // 创建一个订阅者对象
        Subscriber subscriber = new Subscriber();

        // 使用加法赋值运算符 (+=) 来为事件添加事件处理程序
        publisher.MyEvent += subscriber.HandleEvent!;

        // 调用发布者的操作方法,引发事件
        publisher.DoSomething();

        // 输出结果:
        // Publisher is doing something.
        // Subscriber received event from Publisher.
    }
}


posted on 2024-01-30 13:49  lazycookie  阅读(12)  评论(0编辑  收藏  举报