Exemple #1
0
 public void BoilWater( )
 {
     for (int i = 0; i < 100; i++)
     {
         temperature = i;
         if (temperature > 95)
         {
             //生成一个自定义的参数事件对象,在处理发布方法之前可以做一些其它事情
             BoiledEventArgs e = new BoiledEventArgs(temperature);
             //将事件发布
             OnBoiled(e);
         }
     }
 }
Exemple #2
0
        /// <summary>
        /// 烧水
        /// </summary>
        public void BoilWater()
        {
            for (int i = 0; i < 100; i++)
            {
                temperature = i;

                if (temperature > 95)
                {
                    //建立BoliedEventArgs 对象。
                    BoiledEventArgs e = new BoiledEventArgs(temperature);

                    // 调用 OnBolied方法
                    OnBoiled(e);
                }
            }
        }
Exemple #3
0
 /// <summary>
 /// 可以供继承自 Heater 的类重写,以便继承类拒绝其他对象对它的监视
 /// </summary>
 /// <param name="e"></param>
 protected virtual void OnBoiled(BoiledEventArgs e)
 {
     // 如果有对象注册
     Boiled?.Invoke(this, e);
     // 调用所有注册对象的方法
 }
Exemple #4
0
 //被注册的方法,订阅者收到事件后需要执行的方法
 //按照.NET Framework准则,注册方法需要接收两个参数,第一个参数是事件源,第二个是自定义事件
 public void MakeAlart(Heater obj, BoiledEventArgs e)
 {
     Console.WriteLine("Alarm recived event,temperature: {0} ,made by {1}", e.Tempareture, obj.Producer);
 }
Exemple #5
0
 //被注册的方法,订阅者收到事件后需要执行的方法
 public void ShowMsg(Heater obj, BoiledEventArgs e)
 {
     Console.WriteLine("Display recived event,temperature: {0} ,made by {1}", e.Tempareture, obj.Producer);
 }
Exemple #6
0
 //包装事件回调方法,访问修饰使之可以被派生类重写回调方法
 protected virtual void OnBoiled(BoiledEventArgs e)
 {
     //判断订阅是否为空,不为空则执行回调方法
     handler?.Invoke(this, e);
 }