C# 中的事件
时间:2010-12-27 来源:hfliyi
事件可以有许多订阅的处理程序,在该事件发生时候,这些处理程序都会被调用,其中包括引发该事件的对象所在的类的处理程序,但事件处理程序可能在其他类中。
事件处理程序本身都是简单的函数。对事件处理程序函数的唯一的限制是它必须匹配事件所要求的签名(返回类型和参数)。这个签名是事件定义的一部分,有一个委托指定。

1 class Event1用于引发事件的对象是System.Timers.Timer类的一个实例。使用一个时间段来初始化该对象,当使用Start方法启动Timer对象时,就引发一系列事件,根据指定的时间段来引发事件。Timer对象有一个Elapsed事件,这个事件要求的事件处理程序签名是System.Timers.ElapsedEventHandler委托类型, 该委托是.NET FRAMEWORK中定义的标准委托之一,用于与下述签名匹配的函数
2 {
3 static int counter = 0;
4 static string displayString = "This string will appear one letter at a time";
5 static void Main(string[] args)
6 {
7 Timer timers = new Timer(100);
8 timers.Elapsed += new ElapsedEventHandler(timers_Elapsed);
9 timers.Start();
10 Console.ReadKey();
11
12 }
13
14 static void timers_Elapsed(object sender, ElapsedEventArgs e)
15 {
16 Console.Write(displayString[counter++ % displayString.Length]);
17 }
18 }
void functionName(object source , ElapsedEventArgs e);
把处理程序与事件关联起来,即订阅它,使用+=运算符,给事件添加一个处理程序,其形式使用事件处理方法初始化的一个新委托的实例。
相关阅读 更多 +
排行榜 更多 +