ASP.NET温故而知新学习系列之委托与事件—事件概述(一)
阅读目录
一:事件概述
二:ASP.NET中的事件
三:实例
四:运行效果
一:事件概述
1:Windows操作系统启动的时候,要加载硬件,加载硬件驱动,加载软件等等,启动以后只要你不点击它,它就没有任何的反应,当你单击“开始”菜单的时候,就会弹出一个菜单来,大部分的程序都是面向事件驱动的,什么是事件驱动呢?就是由外界触发的,事件就是一个信号,它告知应用程序有重要的情况发生
2:C#中使用事件的步骤
2.1:创建一个委托
2.2:创建一个事件,将创建的事件或者特定的事件和创建的委托关联起来联
2.3:编写事件处理程序
2.4:利用编写的事件处理程序生成一个委托实例
2.5:把这个委托实例添加到产生事件对象的事件列表当中去,这个过程叫做订阅事件
二:ASP.NET中的事件
ASP.NET主要支持3个事件租
1:在ASP.NET生成页面时自动发生
比如:页面加载的时候
protected void Page_Load(object sender, EventArgs e)
{
}
2:用户与页面交互时所发生的事件
比如:单击页面上的一个按钮也就是Web服务器控件所带的一些自己的事件
protected void btnAdd_Click(object sender, EventArgs e)
{
}
3:html内部的事件,这些事件在浏览器上执行
就是javascript实现的那些事件
所有的Web服务器端控件都可以添加两个事件,客户端事件,服务器端事件,客户端事件由浏览器解释执行的,服务器端事件要传到服务器执行的
三:实例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Timers;
namespace EventDemo
{
//step1 创建一个委托
public delegate void MessageHandler(string strMessageText);
class Program
{
static void Main(string[] args)
{
Connection conn = new Connection();
Display display = new Display();
//step4,5 '+='表示事件的预定,'new MessageHandler(display.DiaplayMessage)'表示利用编写的事件处理程序生成一个委托实例,'conn.MessageArrived'表示添加什么到产生事件对象的事件列表当中去,合起来解释就是把这个委托实例添加到产生事件对象的事件列表当中去,这个过程叫做订阅事件,委托就是代理,我们可以这样理解,委托就是把一个事件处理函数和一个事件关联起来
conn.MessageArrived += new MessageHandler(display.DiaplayMessage);
conn.Connect();
Console.ReadKey();
}
}
public class Display
{
public string strMessage;
public Display()
{
}
/// <summary>
/// step3 编写事件处理程序
/// </summary>
/// <param name="message"></param>
public void DiaplayMessage(string message)
{
strMessage = message;
Console.WriteLine("消息到达:{0}",strMessage);
}
}
public class Connection
{
//step2 创建一个事件名称叫'MessageArrived',将创建的事件或者特定的事件和创建的委托关联起来
public event MessageHandler MessageArrived;
private Timer polltimer;//声明一个timer
public Connection()
{
polltimer = new Timer(100);//一百毫秒
//流失事件
polltimer.Elapsed += new ElapsedEventHandler(CheckForMessage);
}
public void Connect()
{
polltimer.Start();
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public void CheckForMessage(object sender, ElapsedEventArgs e)
{
Random random = new Random();
//在时间流失的过程中如果产生的随机数正好是9的话,我们就输出一个消息
if ((random.Next(9)==0) && (MessageArrived != null))
{
//MessageArrived("你好")实际执行的是DiaplayMessage()方法
MessageArrived("你好");
}
}
}
}
四:运行效果
摘自 从小就犯困
补充:Web开发 , ASP.Net ,