/// <summary> /// 下载代理数据 /// </summary> /// <returns></returns> private ProxyItems DownloadProxyList(int sinceId, int count) { //创建一个BmobQuery查询对象 BmobQuery query = new BmobQuery(); //查询playerName的值为bmob的记录 query.WhereEqualTo("isvip", false); query.Limit(count); query.Skip(sinceId); ProxyItems items = new ProxyItems(); var future = Bmob.FindTaskAsync <ProxyServers>(ProxyServers.TABLE_NAME, query); //对返回结果进行处理 var list = future.Result.results; if (list != null && list.Count > 0) { items.items = new List <ProxyServer>(); foreach (var model in list) { var proxy = model.Get(); items.items.Add(proxy); } } else { items = null; } return(items); }
/// <summary> /// 下载代理 /// </summary> /// <returns></returns> public bool DownloadProxyList() { try { CloudProxyData.CloudProxyList.Clear(); ProxyItems result = Config.MyApiHelper.DownloadProxyList(); if (result != null && result.items.Count > 0) { List <ProxyServer> proxies = result.items; lock (CloudProxyData.CloudProxyList) { CloudProxyData.CloudProxyList = (from row in proxies select row).Distinct().ToList(); } return(true); } else { return(false); } } catch (Exception ex) { LogHelper.WriteException(ex); return(false); } finally { Config.LateUpdateProxyListTime = DateTime.Now; } }
/// <summary> /// 下载代理数据 /// </summary> /// <returns></returns> public ProxyItems DownloadProxyList() { var sw = new Stopwatch(); var result = new ProxyItems { items = new List <ProxyServer>() }; _proxyItems = new ProxyItems { items = new List <ProxyServer>() }; try { sw.Start(); var totalCount = GetTotalProxyCount(); if (totalCount > 0) { const int pageSize = 1000; //每次取的数量 var page = totalCount / pageSize; page = totalCount % pageSize > 0 ? page + 1 : page; //总页数 #region 单线程 //for (var i = 0; i < page; i++) //{ // proxyItems = DownloadProxyList(i * pageSize, pageSize); // if (null != proxyItems && proxyItems.items != null) // { // result.items = result.items.AsEnumerable().Union(proxyItems.items.AsEnumerable()).Distinct().ToList<ProxyServer>(); // } //} #endregion #region 多线程 _worker = new Worker(new object[] { page, pageSize }); _worker.Worker_Started += WorkStart; //工作开始 _worker.Worker_Completed += WorkCompleted; //工作结束 _worker.Start(); while (_worker.ReturnValue == null) { if (sw.Elapsed.Minutes > 2) { sw.Stop(); return(result); } } result = (ProxyItems)_worker.ReturnValue; #endregion } sw.Stop(); } catch { } return(result); }
/// <summary> /// 线程工作内容 /// </summary> /// <param name="WorkThread"></param> /// <param name="arg"></param> private void WorkThread_DoWork(object WorkThread, EventArgs arg) { var workThread = (WorkThread)WorkThread; var sinceId = (int)workThread.Parameters[0]; var count = (int)workThread.Parameters[1]; ProxyItems items = DownloadProxyList(sinceId, count); if (null != items && items.items != null) { _proxyItems.items = items.items.AsEnumerable().Union(_proxyItems.items.AsEnumerable()).Distinct().ToList(); } }