/// <summary> /// 判断当前代理的健康性 /// </summary> /// <param name="cProxyNode">当前代理节点</param> /// <returns></returns> /// <remarks> /// 判断代理是否可用下载'新浪网公司'简介页面,并判断是否有'新浪网'字样 /// </remarks> public static bool CheckWebProxy(ProxyIPNode cProxyNode) { if (cProxyNode == null) { return(false); } if (!cProxyNode.CheckExpired) { return(cProxyNode.CanUse); } lock (cProxyNode) { if (!cProxyNode.CheckExpired) { return(cProxyNode.CanUse); } try { var cProxy = new WebProxy(cProxyNode.IP, cProxyNode.Port); //INFO 判断当前代理健康, 去下载新浪网站一个页面 var checkHtml = RequestHelper.DownLoadHtml("http://corp.sina.com.cn/chn/sina_index.html", null, null, 500, cProxy); cProxyNode.LastCheckDate = DateTime.Now; if (!string.IsNullOrEmpty(checkHtml) && checkHtml.IndexOf("新浪") > -1) { return(true); } return(false); } catch (Exception ex) { Log.ErrorFormat("CheckWebProxy-ProxyIPNode:{0}-ex:{1}", cProxyNode, ex); ex = null; return(false); } } //return cProxyNode.CanUse; }
/// <summary> /// </summary> private void ProcessQueue() { foreach (var dataItem in _itemQueue.GetConsumingEnumerable()) { try { Process(dataItem); Thread.Sleep(0); } catch (Exception ex) { Log.ErrorFormat("ConcurrentConsumerQueue-DataItem:{0}-ex:{1}", dataItem, ex); ex = null; Thread.Sleep(5); } } }