using System.Collections.Generic;
using System.Threading.Tasks;
public static void MealChangeventHandeler(object sender, MealChangetEventArgs e)
Console.WriteLine(" {0} {1} having {2} ", e.cust.FirstName, e.cust.LastName, e.cust.meal);
public static void Main()
Customer c1 = new Customer();
Customer c2 = new Customer();
Customer c3 = new Customer();
Customer c4 = new Customer();
Customer c5 = new Customer();
Queue<Customer> collection = new Queue<Customer>();
var tableevent = new TableEvent();
foreach (Customer i in collection)
tableevent.TableEvent1 += i.HandleTable;
Console.WriteLine("All Are FUll..!!");
public delegate void MealChangeventHandeler(object source, MealChangetEventArgs e);
public class MealChangetEventArgs : EventArgs
public MealChangetEventArgs(Customer customer)
public event TableEventArg TableEvent1;
Console.WriteLine("Tbae is open!");
TableEventArg open = TableEvent1;
open(this, new TableNotification());
public delegate void TableEventArg(object source, TableNotification e);
public class TableNotification : EventArgs
public string Notify { get; set; }
public TableNotification()
public void HandleTable(object sender, TableNotification e)
Console.WriteLine("{0} {1} Got the table ", this.FirstName,this.LastName);
public string FirstName { get; set; }
public string LastName { get; set; }
public Meal meal { get; set; }
public event MealChangeventHandeler mealchangeEvent;
public void MealNext(Meal meal1)
MealChangeventHandeler changename = mealchangeEvent;
this.meal = Meal.Appetizer;
if (mealchangeEvent != null)
changename(this, new MealChangetEventArgs(this));
if (mealchangeEvent != null)
changename(this, new MealChangetEventArgs(this));
this.meal = Meal.Dessert;
if (mealchangeEvent != null)
changename(this, new MealChangetEventArgs(this));
if (mealchangeEvent != null)
changename(this, new MealChangetEventArgs(this));
if (mealchangeEvent != null)
changename(this, new MealChangetEventArgs(this));