/// <summary> /// 初始化 /// </summary> public void Ini() { //初始化空闲的ISearch 队列 _FreeItems = new Queue<Search.ISearch>(); if (!string.IsNullOrEmpty(IP) && !string.IsNullOrEmpty(Port)) { //初始化最小Min 个ISearch 对象 for (int i = 1; i <= Min; i++) { SocketSearch ss = new SocketSearch(i, IP, Port, _type); //初始化 ss.logIn(); //登录Main _FreeItems.Enqueue(ss); //添加到队列中 } } _UsedItems = new List<Search.ISearch>(); //初始化一个空的已经使用的ISearch对象列表 准备放已使用的ISearchObject }
/// <summary> /// ISearchPool 增长 /// </summary> /// <returns></returns> public bool Grow() { //判断当前池的数量是否已经是最大值 if (Count < Max) { //向空闲的ISearch队列中添加 Growth 个ISearch对象 for (int i = 1; i <= Growth; i++) { ISearch s = new SocketSearch(Count +1, IP, Port, _type); s.logIn(); lock (_FreeItems) { _FreeItems.Enqueue(s); } if (Count >= Max) { break; } } return true; } else //池已经达到最大 { return false; } }