public void AddOrUpdate(int id, Premium item) { var prev = _premiums[id]; if (_premiums[id].IsNotEmpty()) { if (prev.IsNow() != item.IsNow()) { if (prev.IsNow()) { _now.DelayRemove(id); } else { _now.DelayAdd(id); } } } else { _ids.DelayAdd(id); if (item.IsNow()) { _now.DelayAdd(id); } } _premiums[id] = item; }