Esempio n. 1
0
        // 匹配特殊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);
            }
        }
Esempio n. 2
0
        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;
                }
            });
        }