zoukankan      html  css  js  c++  java
  • demo for Event code

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace EventDemo
    {
        delegate void TemperatureChangedEventHandle(object sender, BoiledWaterEventArgs args);
        class Program
        {
            static void Main(string[] args)
            {
                Heater ht = new Heater();
                Monitor mt = new Monitor();
                ht.TemperatureChanged += new TemperatureChangedEventHandle(Monitor.MonitorTemperature);
                ht.PowerOn();
            }
        }
        class Heater
        {
            public Heater()
            {
                Type = "强力热得快";
                Area = "Made in China, Made by Trump";
            }
            private int _temperature;
            public event TemperatureChangedEventHandle TemperatureChanged;
            public string Type
            {
                get;
                private set;
            }
            public string Area
            {
                get;
                private set;
            }
            public bool IsOnPower
            {
                get;
                private set;
            }
            public void PowerOff()
            {
                IsOnPower = false;
                string s = new string('*'50);
                Console.WriteLine("我的电源被拔掉了,现在温度开始下降,Type:{0},Area:{1}", Type, Area);
                Console.WriteLine(s);
                System.Threading.Thread.Sleep(500);
                while (_temperature > 0)
                {
                    _temperature--;
                    System.Threading.Thread.Sleep(500);
                    TemperatureChanged(thisnew BoiledWaterEventArgs { Temperature = _temperature,Type=this.Type,Area = this.Area});
                }
            }
            public void PowerOn()
            {
                IsOnPower = true;
                string s = new string('*'50);
                Console.WriteLine("我开始烧水了我的信息,Type:{0},Area:{1}", Type, Area);
                System.Threading.Thread.Sleep(500);
                Console.WriteLine(s);
                BoilWater();
            }
            private void BoilWater()
            {
                while (IsOnPower && _temperature < 100)
                {
                    _temperature++;
                    System.Threading.Thread.Sleep(200);
                    TemperatureChanged(thisnew BoiledWaterEventArgs { Temperature = _temperature, Type = this.Type, Area = this.Area });
                }
            }
        }
        class Monitor
        {
            public static void MonitorTemperature(object sender, BoiledWaterEventArgs args)
            {
                Heater ht = sender as Heater;
                int temperature = args.Temperature;
                if (null == ht)
                {
                    Console.WriteLine("这不是坑爹嘛,sender根本就不是热水器", temperature);
                    return;
                }
                if (temperature < 30)
                {
                    Console.WriteLine("水温也太低了.....浑身鸡皮疙瘩,温度:{0}", temperature);
                    if (!ht.IsOnPower)
                    {
                        ht.PowerOn();
                    }
                }
                else if (temperature >= 30 && temperature < 50)
                {
                    Console.WriteLine("水温刚好,很爽,温度:{0}", temperature);
                }
                else if (temperature >= 50 && temperature < 70)
                {
                    Console.WriteLine("有点烫,尚可忍受,权当蒸桑拿了,温度:{0}", temperature);
                }
                else if (temperature >= 70)
                {
                    Console.WriteLine("你想烫死哥啊,快关电源,温度:{0}", temperature);
                    if (ht.IsOnPower)
                    {
                        ht.PowerOff();
                    }
                }
            }
        }
        class BoiledWaterEventArgs : EventArgs
        {
            public int Temperature
            {
                get;
                set;
            }
            public string Type
            {
                get;
                set;
            }
            public string Area
            {
                get;
                set;
            }
        }
    }
  • 相关阅读:
    Linux入门-第四周
    Linux入门-第三周
    使用yum命令报错File "/usr/bin/yum", line 30 except KeyboardInterrupt, e:
    Linux-帮助的用法
    Linux-history的用法
    【memcached启动报错】
    【rabbitmq消息队列配置】
    【saltstack 集中化管理】
    【mongodb用户和身份认证管理】
    【mongdb主从复制和同步】
  • 原文地址:https://www.cnblogs.com/kakaliush/p/2283688.html
Copyright © 2011-2022 走看看