//------------PriceModel------------
 //-------------receiveOrder---------
  public void receiveOrder()
  {
      MultiCellBuffer midcells = new MultiCellBuffer();
      string ordstring;
      Coder cod = new Coder();
      for (int i = 0; i < 80; i++)
      {
          Thread.Sleep(50);
          ordstring=midcells.getOneCell();
          if (ordstring != null)
          {  
              Thread OrderProcessingThread = new Thread(new ParameterizedThreadStart(OrderProcessing));  
              //create new thread for each order
              OrderProcessing(ordstring);
          }                
      }      
  }
 public void sendOrder(Order ord)
 {
     Coder cod = new Coder();
     MultiCellBuffer midcells = new MultiCellBuffer();
     Thread setorder = new Thread(new ParameterizedThreadStart(midcells.setOneCell));
     Console.WriteLine("Store{0} has sent one order", id);
     setorder.Start(cod.Encoder(ord));   //each order create a new thread
 }
        public static Boolean confirmed = false;  //avoid multi confirm
        static void Main(string[] args)
        {
         MultiCellBuffer midcells = new MultiCellBuffer();
         midcells.initCells();  //init buffer cells
            ChickenFarm chicken= new ChickenFarm();
            Thread farmer =new Thread(new ThreadStart(chicken.farmerFunc));  
            Thread receivOrd = new Thread(new ThreadStart(chicken.receiveOrder));
            farmer.Start();  //start one farmer thread
            receivOrd.Start();//start check order thread
            Retailer[] retailers =new Retailer[5];
                for (int i = 0; i < 5; i++)
                {           //N=5 here
                    retailers[i] = new Retailer();
                    Thread retail = new Thread(new ParameterizedThreadStart(retailers[i].retailerFunc));
                    ChickenFarm.priceCut += new priceCutEvent(retailers[i].chickenOnSale);   //cut event
                    ChickenFarm.confrim += new ConfrimationEvent(retailers[i].Confirmation);  // confirm event
                    retail.Start(i);
                }

                Console.ReadLine();
        }