public void ReturnFilter(FilterDocument filter) { this.m_lock.AcquireReaderLock(m_nLockTimeout); try { for (int i = 0; i < list.Count; i++) { FilterHolder item = this.list[i]; if (item.FilterDocument == filter) { int nValue = Interlocked.Decrement(ref item.UsedCount); if (nValue < 0) { throw new Exception("还回后UsedCount小于0, 错误"); } return; } } } finally { this.m_lock.ReleaseReaderLock(); } throw new Exception("还回的对象在数组中没有找到"); }
// 加入一个 FilterDocument 对象。 // 如果 list 中的对象数量超过了 Max 上限,则不会加入 // return: // true 已经加入 // false 未加入 public bool NewFilter(FilterDocument filter) { this._lock.AcquireWriterLock(_nLockTimeout); try { if (this._list.Count >= this._container.Max) { return(false); } FilterHolder item = new FilterHolder(); item.FilterDocument = filter; this._list.Add(item); return(true); } finally { this._lock.ReleaseWriterLock(); } }
// return: // true 已经加入 // false 未加入 public bool NewFilter(FilterDocument filter) { this.m_lock.AcquireWriterLock(m_nLockTimeout); try { if (this.list.Count >= this.Container.Max) return false; FilterHolder item = new FilterHolder(); item.FilterDocument = filter; this.list.Add(item); return true; } finally { this.m_lock.ReleaseWriterLock(); } }