本文主要讲解多用途的事件处理程序。
static void Main(string[] args)
{
Connection myConnection1 = new Connection();
myConnection1.Name = "First connection.";
Connection myConnection2 = new Connection();
myConnection2.Name = "Second connection.";
Display myDisplay = new Display();
myConnection1.MessageArrived += new MessageHandler(myDisplay.DisplayMessage); //注册事件
myConnection2.MessageArrived += new MessageHandler(myDisplay.DisplayMessage);
myConnection1.Connect(); //开启定时
myConnection2.Connect();
Console.ReadKey();
}
这个程序的工作主要是发送一个引发事件的对象引用,将其作为事件处理程序的一个参数,就可以为不同的对象定制
处理程序的响应。利用该引用可以访问源对象,包括它的属性。
public void DisplayMessage(Connection source, MessageArrivedEventArgs e)//消息显示函数
{
Console.WriteLine("Message arrived from: {0}", source.Name);
Console.WriteLine("Message Text: {0}", e.Message);
}
工作流程:
这个程序比上一个程序多了一个读取对象源和它的属性的功能。
小结:本程序用到了两种事件,一种是系统自带的定时器间隔触发事件,另外一种是自定义的事件。
自定义事件稍微复杂一点,主要包括以下三个步骤:
(1)public delegate void MessageHandler(Connection source, MessageArrivedEventArgs e);
(2)public event MessageHandler MessageArrived;
此后,MessageArrived可以具有和消息句柄MessageHandler一样的功能,比如给它添加消息事件
(3)myConnection1.MessageArrived += new MessageHandler(myDisplay.DisplayMessage);
系统自带的事件只需要第(3)步就可以实现了。