Esempio n. 1
0
        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;
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        // 从集合中清除特定名字的 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();
            }
        }