// 匹配特殊url public void SepcialMatch(string url) { if (string.IsNullOrEmpty(url) || string.IsNullOrEmpty(SpecRegStr) || SpecUrlQueue.Contains(url)) { return; } Regex reg = new Regex(SpecRegStr); Match m = reg.Match(url); if (m.Success) { lock ((SpecQueueLock)) SpecUrlQueue.Enqueue(url); } }
public void Search(string url) { if (string.IsNullOrEmpty(url) && string.IsNullOrEmpty(BaseURL)) { return; } if (!string.IsNullOrEmpty(url)) { BaseURL = url; } HandUrl(new UrlGroup() { Url = BaseURL, DepathNumber = 0 }, 0); Thread.Sleep(1000); //for (int i = 0; i < MaxThreadCount; i++) //{ ThreadPool.QueueUserWorkItem(x => { try { while (true) { if (IsStop) { break; } if (IsAllDone) { break; } if (IsPause) { continue; } if (UrlQueue.Count == 0 && SpecUrlQueue.Count == 0 && UrlQueue.Count == 0) { break; } if (UrlQueue.Count == 0) { Thread.Sleep(10000); } UrlGroup urlGroup = (UrlGroup)UrlQueue.Dequeue(); HandUrl(urlGroup, urlGroup.DepathNumber); Thread.Sleep(1000); } } catch (Exception ex) { throw ex; } }); //} ThreadPool.QueueUserWorkItem(x => { try { while (true) { if (IsStop) { break; } if (IsPause) { continue; } if (IsAllDone && SpecUrlQueue.Count == 0) { break; } if (SpecUrlQueue.Count == 0) { Thread.Sleep(10000); } HandSpecialUrl(SpecUrlQueue.Dequeue().ToString()); Thread.Sleep(1000); } } catch (Exception ex) { throw ex; } }); }