事件是用户操作,例如:按键,点击,鼠标移动等,或者某些事件,例如:系统生成的通知。应用程序需要响应事件发生时。 例如,中断。事件用于进程间通信。
使用委托与事件
事件在类中声明和引发,并使用同一个类或其他类中的委托与事件处理程序相关联。包含事件的类用于发布事件。这被称为发布者类。接受这个事件的其他类被称为订阅者类。事件使用发布者订阅者模型。
发布者是一个包含事件和委托的定义的对象。事件委托关联也在此对象中定义。 发布者类对象调用该事件,并将其通知给其他对象。
订阅者是接受事件并提供事件处理程序的对象。发布者类中的委托调用订阅者类的方法(事件处理程序)。
声明事件
要在类中声明事件,首先必须声明事件的委托类型。 例如,
public delegate string MyDel(string str);
接下来,使用event
关键字声明事件:
event MyDel MyEvent;
上面的代码定义了一个名称为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("zaixian zaixian");
Console.WriteLine(result);
}
}
}
当上述代码被编译并执行时,它产生以下结果:
Welcome zaixian Point