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<EventArgs> CustomEvent = 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

        }

 

转载于:https://www.cnblogs.com/easy5weikai/p/3670457.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值