• C# 事件


    1.一般事件:

           发布者(类FaBuZhe)中定义事件: 

            1). 声明委托类型: public delegate void CustomEventHandler(object sender, EventArgs e);
            2). 创建CustomEventHandler的实例(CustomEvent事件):public event CustomEventHandler CustomEvent;

          

            3).订阅者(类DingYueZhe):持有发布者的对象并用其注册事件

                        FaBuZher faBuzhe = new FaBuZhe();
                        faBuZhe.CustomEvent += new FaBuZhe.CustomEventHandler(DoOnCustomEvent);

            
            4). 发布者触发事件:

                       faBuZhe.CustomEvent(this, eventArgs); //拓展:线程安全如何处理,参看《CLR via C# 第三版》

            5).订阅者被通知后,决定干点事:

            void DoOnCustomEvent(object sender, EventArgs e)

            {

                  ..... ;//do something here

            }

    2.泛型事件:

           发布者(类FaBuZhe)中定义事件: 

            1). 声明委托类型的对象: public delegate void CustomEventHandler(object sender, EventArgs e);
            2). 创建泛型事件的实例CustomEvent:public event EventHandler<EventArgsCustomEvent = delegate { };

            3).订阅者(类DingYueZhe):持有发布者的对象并用其注册事件

                        FaBuZher faBuzhe = new FaBuZhe();
                        faBuZhe.CustomEvent += new EventHandler<EventArgs>(DoOnCustomEvent);

            
            4). 发布者触发事件:

                   //使用foreah循环调用GetInvocationList是为了处理来自订阅者的异常

                    foreach (EventHandler<EventArgs> hanlder in CustomEvent.GetInvocationList())
                    {
                        //  faBuZhe.CustomEvent(this, eventArgs);//拓展:线程安全如何处理,参看《CLR via C# 第三版》
                        hanlder(this, eventArgs);
                    }

            5).订阅者被通知后,决定干点事:

            void DoOnCustomEvent(object sender, EventArgs e)

            {

                  ..... ;//do something here

            }

  • 相关阅读:
    【手把手教你】win10 虚拟机 VMware Workstation Pro 15下安装Ubuntu 19.04
    虚拟机 VMware Workstation Pro 15.5.0 及永久激活密钥
    MATLAB 之MATLAB2016b 安装破解教程
    ubuntu 下 使用GTK+、sqlite3、c语言的学生系统
    drf 之序列化器-Serializer
    Element UI 中scope用法
    vue使用Element UI案例(商品列表)
    Django Rest_Framework(drf)介绍,以及安装和配置
    drf 准备知识(Web应用模式、 api接口、RESTful API规范和序列化)
    vue客户端项目的基本搭建以及ElementUI
  • 原文地址:https://www.cnblogs.com/easy5weikai/p/3670457.html
Copyright © 2020-2023  润新知