事件在 C# 中的应用
事件是用户动作如按键、点击、鼠标移动等,或者是系统生成的通知等某种发生的情况。应用程序需要在事件发生时作出响应。例如,中断。事件通常用于进程间的通信。
使用委托与事件
事件在一个类中被声明和触发,并在同一类或其它类中使用委托与事件处理器关联起来。包含事件的类用来发布事件,这被称为发布者类。接受此事件的另一个类则称为订阅者类。事件使用的是发布者-订阅者模型。
发布者是一个包含事件定义和委托定义的对象。事件-委托的关联也是在此对象中定义的。发布者类的对象会调用事件,然后通知其他对象。
订阅者是一个接收事件并提供事件处理器的对象。发布者类中的委托会调用订阅者类的方法(事件处理器)。
声明事件
要在类内部声明一个事件,首先必须声明一个委托类型作为事件的基础:
public delegate string BoilerLogHandler(string str);
然后,使用 event
关键字声明事件:
event BoilerLogHandler BoilerEventLog;
上述代码定义了一个名为 BoilerLogHandler
的委托以及一个名为 BoilerEventLog
的事件,当事件被触发时将会调用该委托。
示例
using System;
namespace SampleApp {
public delegate string MyDel(string str);
class EventProgram {
event MyDel MyEvent;
public EventProgram() {
this.MyEvent += new MyDel(this.WelcomeUser);
}
public string WelcomeUser(string username) {
return "Welcome " + username;
}
static void Main(string[] args) {
EventProgram obj1 = new EventProgram();
string result = obj1.MyEvent("Tutorials Point");
Console.WriteLine(result);
}
}
}
当上述代码被编译和执行时,它会产生如下结果:
Welcome Tutorials Point