public int Max = 100; // 每个List中对象数上限 public FilterDocument GetFilter(string strName) { if (IgnoreCase == true) strName = strName.ToLower(); FilterList filterlist = null; this.m_lock.AcquireWriterLock(m_nLockTimeout); try { filterlist = (FilterList)table[strName]; if (filterlist == null) { filterlist = new FilterList(); filterlist.Container = this; table[strName] = filterlist; } } finally { this.m_lock.ReleaseWriterLock(); } FilterDocument filter = filterlist.GetFilter(); return filter; }
public void SetFilter(string strName, FilterDocument filter) { if (IgnoreCase == true) { strName = strName.ToLower(); } FilterList filterlist = null; this._lock.AcquireWriterLock(_nLockTimeout); try { filterlist = (FilterList)_table[strName]; if (filterlist == null) { filterlist = new FilterList(); filterlist.Container = this; _table[strName] = filterlist; } Debug.Assert(filterlist != null, ""); } finally { this._lock.ReleaseWriterLock(); } filterlist.SetFilter(filter); }
public int Max = 100; // 每个List中对象数上限。100 public FilterDocument GetFilter(string strName) { if (IgnoreCase == true) { strName = strName.ToLower(); } FilterList filterlist = null; this._lock.AcquireWriterLock(_nLockTimeout); try { // 查看一个名字是否有对应的 FilterList 对象了 filterlist = (FilterList)_table[strName]; // 如果还没有,则创建一个新对象 if (filterlist == null) { filterlist = new FilterList(); filterlist.Container = this; _table[strName] = filterlist; } } finally { this._lock.ReleaseWriterLock(); } // 从 FilterList 对象中获取一个 FilterDocument 对象。 // 注: FilterList 对象用于管理多个 FilterDocument 对象,其中被征用的暂时就不能被使用了,需要创建新对象 FilterDocument filter = filterlist.GetFilter(); return(filter); }
public string Dump() { string strResult = ""; strResult += "本集合中共用'" + Convert.ToString(this._table.Count) + "'个FilterList对象.\r\n"; foreach (DictionaryEntry item in _table) { strResult += " " + item.Key + "\r\n"; FilterList list = (FilterList)item.Value; strResult += " " + list.Dump(); } return(strResult); }
// 从集合中清除特定名字的 FilterList 对象 public void ClearFilter(string strName) { if (IgnoreCase == true) { strName = strName.ToLower(); } this._lock.AcquireWriterLock(_nLockTimeout); try { FilterList filterlist = (FilterList)_table[strName]; if (filterlist != null) { _table.Remove(strName); } } finally { this._lock.ReleaseWriterLock(); } }