示例#1
0
        static void Main(string[] args)
        {
            Sensor        sensor = new Sensor();
            WetherStation ws     = new WetherStation();
            CurrentWether cw     = new CurrentWether();
            AverageWether aw1    = new AverageWether();
            AverageWether aw2    = new AverageWether();
            IDisposable   sub1;
            IDisposable   sub2;

            Task.Factory.StartNew(() => ws.ObserveSensor(sensor));
            Task.Factory.StartNew(() => { while (true)
                                          {
                                              Thread.Sleep(5000); Console.WriteLine("Current Wether: "); cw.DisplayWeather(); Console.WriteLine();
                                          }
                                  });
            Thread.Sleep(500);
            Task.Factory.StartNew(() => { while (true)
                                          {
                                              Thread.Sleep(5000); Console.WriteLine("Average Wether1: "); aw1.DisplayWeather(); Console.WriteLine();
                                          }
                                  });
            Thread.Sleep(500);
            Task.Factory.StartNew(() => { while (true)
                                          {
                                              Thread.Sleep(5000); Console.WriteLine("Average Wether2: "); aw2.DisplayWeather(); Console.WriteLine();
                                          }
                                  });

            sub1 = ws.Subscribe(cw);
            sub2 = ws.Subscribe(aw1);

            sensor.Temperature = 18;
            Thread.Sleep(6000);
            sensor.Pressure = 1150;
            Thread.Sleep(5000);
            sensor.Rain     = true;
            sensor.Humidity = 0.7;
            Thread.Sleep(5000);
            sensor.Temperature = 9;
            sub1.Dispose();
            sub1        = ws.Subscribe(aw2);
            sensor.Rain = false;
            Thread.Sleep(5000);
            sensor.Humidity = 0.4;
            Thread.Sleep(5000);
            sensor.Temperature = -1;

            Console.ReadKey();
        }
 public void Dispose()
 {
     parent.RemoveSubscription(this);
     parent = null;
 }
 public Subscribtion(WetherStation parent, IObserver <WetherStationDTO> obserwer)
 {
     this.parent   = parent;
     this.Obserwer = obserwer;
 }