/// <summary>添加实体对象进入队列</summary> /// <param name="entity">实体对象</param> /// <param name="msDelay">延迟保存的时间</param> /// <returns>返回是否添加成功,实体对象已存在于队列中则返回false</returns> public Boolean Add(IEntity entity, Int32 msDelay) { var rs = false; if (msDelay <= 0) { rs = Entities.TryAdd(entity, entity); } else { rs = DelayEntities.TryAdd(entity, TimerX.Now.AddMilliseconds(msDelay)); } if (!rs) { return(false); } // 超过最大值时,堵塞一段时间,等待消费完成 while (_count >= MaxEntity) { Thread.Sleep(100); } return(true); }
/// <summary>添加实体对象进入队列</summary> /// <param name="entity">实体对象</param> /// <param name="msDelay">延迟保存的时间</param> /// <returns>返回是否添加成功,实体对象已存在于队列中则返回false</returns> public Boolean Add(IEntity entity, Int32 msDelay) { // 首次使用时初始化定时器 if (_Timer == null) { lock (this) { if (_Timer == null) { _Timer = new TimerX(Work, null, Period, Period, "EQ") { Async = true }; _Timer.CanExecute = () => DelayEntities.Any() || Entities.Any(); } } } var rs = false; if (msDelay <= 0) { rs = Entities.TryAdd(entity, entity); } else { rs = DelayEntities.TryAdd(entity, TimerX.Now.AddMilliseconds(msDelay)); } if (!rs) { return(false); } Interlocked.Increment(ref _count); // 超过最大值时,堵塞一段时间,等待消费完成 while (_count >= MaxEntity) { Thread.Sleep(100); } return(true); }