原则:
1、一段代码中引发了一个事件,那么所有注册了这个事件的对象,它们的事件处理程序都会执行起来,而且引发事件的这个类(发送器端)的执行会暂时停了,等待其他所有的类的事件处理程序完成之后再继续执行。
一个程序之中,几个对象之间如何传递交互信息,便是这样执行。
这个过程类似于C中的消息传递,一个模块(一段代码)发送一个消息sendmessage,这个消息由系统获知,其他等待这个消息的模块(代码)在系统中注册,监听期待这个消息,系统获知这个消息有模块发出的时候,就通知这些注册监听的模块,启动它们的消息处理程序。
对应在windows底层机制便是这样,但是一般在C,MFC的消息中,sendmessage会指出接收端;在C#中,由.net做这个事情,而且事件发生时并不知道目的接收端是哪个对象(与windows底层机制不同之处),而是通过接收端注册去注册事件,监听事件,当事件发生的时候,由.net来通知要处理这个事件的对象。
由此亦可说明