public void OnNext(DataChanged <IOrder> value) { if (value.Action == DataChangedAction.Add) { List <uint> newOrders = value.NewItems.Select(o => o.Id).ToList(); Task.Run(async delegate { await Task.Delay(5000); lock (OrderLock) { foreach (uint id in newOrders) { IOrder order = OrderManager.Get(id); if (order != null && !order.DeliveryDate.HasValue) { order.DeliveryDate = DateTime.Now; foreach (IObserver <OrderSent> observer in OrderSentObservers.ToList()) { observer.OnNext(new OrderSent(order)); } Update(order).GetAwaiter().GetResult(); } } } }); } }
public IDisposable Subscribe(IObserver <OrderSent> observer) { OrderSentObservers.Add(observer); return(new Unsubscriber <OrderSent>(OrderSentObservers, observer)); }