Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

c# eventhandler

作者:空白篇pia~   发布日期:2025-05-07   浏览:100

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();
        }
    }
}

解释说明:

  1. CustomEventHandler:定义了一个自定义的事件委托类型,它接受两个参数:object senderEventArgs e。这是事件处理程序的标准签名。
  2. Publisher 类:这个类包含了事件的定义 (MyEvent) 和触发事件的方法 (TriggerEvent)。OnMyEvent 是一个保护方法,用于安全地触发事件。
  3. Subscriber 类:这个类订阅了 Publisher 的事件,并定义了事件处理程序 (HandleMyEvent) 来响应事件。
  4. Program 类:在 Main 方法中,创建了 PublisherSubscriber 的实例,并通过 publisher.TriggerEvent() 触发事件。

通过这种方式,当 Publisher 触发事件时,Subscriber 中的事件处理程序会自动执行。

上一篇:c#连接oracle数据库

下一篇:c# default

大家都在看

c# 二进制

c# tcp client

c# type.gettype

c# sqlconnection

.net和c#

c#游戏开发

c#网络编程

c# rectangle

c# if else

c# rtsp

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站