/// <summary> /// 获取一个可用的节点端口 /// </summary> private WebCrawlerConnection GetOneConnConfig() { WebCrawlerConnection slaveNode = null; var allConns = ConfigHelper.WebCrawlerSection.ConnectionStringCollection; if (null == allConns || allConns.Count <= 0) { throw new Exception("未能加载有效的 蜘蛛连接配置!"); } //1 随机数; // 2轮询;(todo) // 3压力综合 //随机数 //var randomObj = new Random(DateTime.Now.Millisecond); //int pos1 = randomObj.Next(0, _slaveNodes.Count - 1); //int pos2 = randomObj.Next(0, _slaveNodes.Count - 1); //int pos_final = Math.Max(pos1, pos2); //slaveNode = _slaveNodes.ElementAt(pos_final); #region 压力综合 slaveNode = allConns.OrderBy(x => x._SysCurrentUseCount).First(); //设置引用计数+1 slaveNode._SysCurrentUseCount += 1; #endregion return(slaveNode); }
/// <summary> /// Dispose 执行 /// </summary> /// <param name="disposing"></param> protected virtual void Dispose(bool disposing) { if (!disposed) { if (disposing) { // 清理托管资源 if (this._Connection._SysCurrentUseCount > 0) { this._Connection._SysCurrentUseCount -= 1; } this._Connection = null; } // 清理非托管资源 //让类型知道自己已经被释放 disposed = true; } }