示例#1
0
 public void ProcessOrder()
 {
     while (mCurrentPriceCuts < mMaxPriceCuts)
     {
         if (mPricingModel.TodaysPrice() <= mLastPrice)
         {
             mLastPrice = mPricingModel.TodaysPrice();
             foreach (IChickenFarmCallback callback in mSubscribers.Values)
             {
                 callback.PriceChanged(mPricingModel.TodaysPrice());
             }
             mCurrentPriceCuts++;
         }
         Order order = mOrderBuffer.GetOneCell();
         ParameterizedThreadStart processOrder = new ParameterizedThreadStart(mOrderProcessing.ProcessOrder);
         Thread orderProcessingThread          = new Thread(processOrder);
         orderProcessingThread.Start(new object[] { order, mSubscribers[order.SenderId] });
         Thread.Sleep(1000);
     }
 }
示例#2
0
        /*
         * Check credit card number
         * Calculate total amount of charge (unit price * quantity + tax + shipping)
         * Send confirmation to retailer
         */
        public void ProcessOrder(object parameters)
        {
            object[] boxedParams = (object[])parameters;

            Order order = (Order)boxedParams[0];
            IChickenFarmCallback callBack = (IChickenFarmCallback)boxedParams[1];

            ProcessedOrder pOrder;

            if (validateCreditCard(order.CreditCardNumber))
            {
                pOrder = new ProcessedOrder(true, order, mPricingModel.TodaysPrice());
                mPricingModel.AddSale(order.AmountOfChickens);
            }
            else
            {
                pOrder = new ProcessedOrder(false, order);
            }

            callBack.OrderConfirmation(pOrder);
        }