前言
说实话,这东西我在做这个东西之前只是单纯的用C#给出的事件,如Form_Load(),然后在事件中写方法,这玩意都是自己生成的,从没关心过这个事件是怎么调用的以及其背后的机制。
所以,现在先浅谈我对这个东西浅显的理解吧,欢迎各位大佬留言指正
我主要参考了这个链接点击打开链接
事件是什么
顾名思义,就是你想做的这件事发生前后与发生时所有的过程都可定义为事件,比如,我吃饭,就有开始吃饭,吃饭中,结束吃饭。。。。。。等等的事件
使用事件的相关知识
事件依赖的机制被称为发布-订阅机制,事件在一个类中声明且生成,且通过使用一个类或其他类中的委托与事件处理程序关联,包含事件的类用于发布事件
发布器(publisher):包含事件和委托定义的对象,事件和委托之间的联系也定义在这个对象之中,发布器调用这个事件并且通知其他对象
订阅器(subscribe):一个接受事件并且提供事件处理的对象,在发布器类中委托调用订阅器类中的方法
如何使用事件
(1)声明事件之前必须先声明该事件的委托类型
public delegate void BoilerHandler(string state) //定义一个名为BolierHandler的委托
(2)声明事件本身
public event BoilerHandler Log;//定义一个基于BoilerHandler的事件Log
(3)发布器调用订阅器
publisher e = new publisher();
subscribe v = new subscribe ();
e.Log += new publisher.BoilerHandler(订阅器。方法);
这样做才能知道,e的Log是想干嘛,因为BoilerHandler中的事件可能很多,同时也将讲订阅器中的方法指向e的Log事件,这样就可以达到多对多的订阅。