private void CheckIfSomethingToDo(DateTime clockTime) { for (int j = 0; j < _beingPrepared.Count; j++) { if (clockTime >= _beingPrepared[j].TimeReady) { _beingPrepared[j].OrderType = OrderType.Ready; OrderReady?.Invoke(this, _beingPrepared[j]); _beingPrepared.RemoveAt(j); j -= 1; } } for (int i = 0; i < _orders.Count; i++) { if (clockTime >= _orders[i].TimeForAction && _orders[i].OrderType == OrderType.Order) { OrderReady?.Invoke(this, _orders[i]); if (!GuestBills.ContainsKey(_orders[i].Name)) { GuestBills.Add(_orders[i].Name, _orders[i].Article.Price); } else { GuestBills[_orders[i].Name] += _orders[i].Article.Price; } _beingPrepared.Add(_orders[i]); _orders.RemoveAt(i); i -= 1; } else if (clockTime >= _orders[i].TimeForAction && _orders[i].OrderType == OrderType.ToPay) { OrderReady?.Invoke(this, _orders[i]); _orders.RemoveAt(i); } } }
public PizzaMaker() { ordersToMake = new Queue <Order>(); TimeToMakeAPizza = TimeSpan.FromMinutes(3.0); fakeTime = FakeTime.Instance; Task.Run(async() => { for (;;) { if (ordersToMake.Count > 0) { //i have to make that order var order = ordersToMake.Dequeue(); await fakeTime.Wait((int)TimeToMakeAPizza.TotalMinutes); if (OrderReady != null) { OrderReady.Invoke(this, order); } } await Task.Delay(50); } }); }
protected virtual void OnOrderReady(EventArgs e) { OrderReady?.Invoke(this, e); }