public void Fahren() { // Endlosschleife while (true) { // Wenn Tankfüllstand größer 0 if (Tankfüllstand > 0) { // Ziehe vom Tank ab Tankfüllstand--; Console.WriteLine("Auto: Brumm..."); Thread.Sleep(500); // Warte eine halbe Sekunde if (Tankfüllstand < 10) { Console.WriteLine("Tankleuchte blinkt rot"); TankfüllstandEventArgs eventArgs = new TankfüllstandEventArgs("ROT"); // Objekt von EventArgs erzeugen TankfüllstandNiedrig?.Invoke(this, eventArgs); // Event auslösen } else if (Tankfüllstand < 15) { Console.WriteLine("Tankleuchte blinkt gelb"); TankfüllstandNiedrig?.Invoke(this, new TankfüllstandEventArgs("GELB")); } } else if (Tankfüllstand <= 0) { break; } } }
// Methode, mit der der Empfänger das Event abonniert hat public void OnTankfüllstandNiedrig(object sender, EventArgs e) { if (sender is Auto) { // Wenn die EventArgs in TankfüllstandEventArgs konvertiert werden können... TankfüllstandEventArgs eventArgs = e as TankfüllstandEventArgs; if (eventArgs != null) { if (eventArgs.Farbe == "GELB") { Console.WriteLine("Fahrer: Ach, hat noch Zeit..."); } else if (eventArgs.Farbe == "ROT") { Console.WriteLine("Fahrer: Jetzt aber dringend Tanken..."); Tanken(sender as Auto); } } } }