zoukankan      html  css  js  c++  java
  • C# 事件

    要创建一个事件驱动的程序需要下面的步骤:

    1.         声明关于事件的委托;

    2.         声明事件;

    3.         编写触发事件的函数;

    4.         创建事件处理程序;

    5.         注册事件处理程序;

    6.         在适当的条件下触发事件。

    现在我们来编写一个自定义事件的程序。主人养了一条忠实的看门狗,晚上主人睡觉的时候,狗负责看守房子。一旦有小偷进来,狗就发出一个Alarm事件,主人接到Alarm事件后就会采取相应的行动。假设小偷于2014

     1 using System;
     2 
     3 //事件发送者
     4 class Dog
     5 {
     6     //1.声明关于事件的委托;
     7     public delegate void AlarmEventHandler(object sender, EventArgs e);
     8 
     9     //2.声明事件;   
    10     public event AlarmEventHandler Alarm;
    11 
    12     //3.编写引发事件的函数;
    13     public void OnAlarm()
    14     {
    15         if (this.Alarm != null)
    16         {
    17             Console.WriteLine("
    狗报警: 有小偷进来了,汪汪~~~~~~~");
    18             this.Alarm(this, new EventArgs());   //发出警报
    19          }
    20     }
    21 }
    22 
    23 //事件接收者
    24 class Host
    25 {
    26     //4.编写事件处理程序
    27     void HostHandleAlarm(object sender, EventArgs e)
    28     {
    29         Console.WriteLine("主  人: 抓住了小偷!");
    30     }
    31 
    32     //5.注册事件处理程序
    33     public Host(Dog dog)
    34     {
    35         dog.Alarm += new Dog.AlarmEventHandler(HostHandleAlarm);
    36     }
    37 }
    38 
    39 //6.现在来触发事件
    40 class Program
    41 {
    42     static void Main(string[] args)
    43     {
    44         Dog dog = new Dog();
    45         Host host = new Host(dog);
    46 
    47         //当前时间,从2008年12月31日23:59:50开始计时
    48         DateTime now = new DateTime(2013, 12, 31, 23, 59, 50);
    49         DateTime midnight = new DateTime(2014, 1, 1, 0, 0, 0);
    50 
    51         //等待午夜的到来
    52         Console.WriteLine("时间一秒一秒地流逝... ");
    53         while (now < midnight)
    54         {
    55             Console.WriteLine("当前时间: " + now);
    56             System.Threading.Thread.Sleep(1000);    //程序暂停一秒
    57             now = now.AddSeconds(1);                //时间增加一秒
    58          }
    59 
    60         //午夜零点小偷到达,看门狗引发Alarm事件
    61         Console.WriteLine("
    月黑风高的午夜: " + now);
    62         Console.WriteLine("小偷悄悄地摸进了主人的屋内... ");
    63         dog.OnAlarm();
    64         Console.ReadLine();
    65     }
    66 }   

    运行结果:

    年元旦午夜时分到达。

  • 相关阅读:
    几个带双下划线的宏
    WM_COPYDATA消息机制 不同进程间发送结构体数据
    解锁ubuntu系统的root
    申请堆空间函数封装(两种方法)
    UITableView的分页的加载
    UIView设置成圆角
    iPhone开发:类似iChat的聊天泡泡
    iPhone中如何自定义tabbar
    android 底部选项卡(TabHost)
    Android 多个Activity选项卡实现
  • 原文地址:https://www.cnblogs.com/wuzhang/p/wuzhang2014881.html
Copyright © 2011-2022 走看看