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 }   

    运行结果:

    年元旦午夜时分到达。

  • 相关阅读:
    用 Python、 RabbitMQ 和 Nameko 实现微服务
    自定义Docker容器的 hostname
    ubuntu下升级R版本
    pair correlation ggpair ggmatrix
    RabbitMQ消息队列(一): Detailed Introduction 详细介绍
    ng-controller event data
    node项目换了环境node_modules各种报错
    Blast本地化
    angularjs $q、$http 处理多个异步请求
    解决angular页面值闪现问题
  • 原文地址:https://www.cnblogs.com/wuzhang/p/wuzhang2014881.html
Copyright © 2011-2022 走看看