事件(
event
)是一个非常重要的概念,我们的程序时刻都在触发和接收着各种
事件:鼠标点击事件,键盘事件,以及处理操作系统的各种事件。所谓事件就是
由某个对象发出的消息。
比如用户按下了某个按钮,
某个文件发生了改变,
socket
上有数据到达。触发事件的对象称作发送者(
sender
),捕获事件并且做出响应
的对象称作接收者(
receiver
),一个事件可以存在多个接受者。
在异步机制中,
事件是线程之间进行通信的一个非常常用的方式。
比如:
用户在
界面上按下一个按钮,
执行某项耗时的任务。
程序此时启动一个线程来处理这个
任务,
用户界面上显示一个进度条指示用户任务执行的状态。
这个功能就可以使
用事件来进行处理。
可以将处理任务的类作为消息的发送者,
任务开始时,
发出
“
TaskStart
”事件,任务进行中的不同时刻发出“
TaskDoing
”事件,并且携带
参数说明任务进行的比例,任务结束的时候发出“
TaskDone
”事件,在画面中
接收并且处理这些事件。
这样实现了功能,
并且界面和后台执行任务的模块耦合
程度也是最低的。
具体说
C#
语言,事件的实现依赖于“代理”(