Exemplo n.º 1
0
        /// <summary>
        /// 开始分析
        /// </summary>
        public override async Task Action()
        {
            try
            {
                DownloadHelper downloadHelper = new DownloadHelper();
                while (!Base.CancelTokenSource.IsCancellationRequested)
                {
                    TaskSupervisor.DisposeInvalidTask();

                    if (WaitImageUrlQueue.Count < 1)
                    {
                        base.Progress("[下载器休眠]图片队列下载完毕,等待分析器...", WaitImageUrlQueue.Count);
                        await Task.Delay(2000);

                        continue;
                    }

                    string imageUrl = Dequeue();
                    // imageUrl = imageUrl.Replace("http://www.unluoli.com/", "");
                    // imageUrl = imageUrl.Insert(0, "http://www.unluoli.com/");
                    if (!ExistList.Contains(imageUrl))
                    {
                        base.Progress("[下载器任务]URL:{0}", imageUrl);
                        Task task   = new Task(delegate { downloadHelper.DownLoadImage(imageUrl); }, Base.CancelTokenSource.Token);
                        bool result = TaskSupervisor.Add(task);
                        if (!result)
                        {
                            base.Progress("[下载器休眠]下载队列已满,等待...", WaitImageUrlQueue.Count);
                            await Task.Delay(2000);

                            WaitImageUrlQueue.Enqueue(imageUrl);
                            continue;
                        }
                        ExistList.Add(imageUrl);
                    }
                }

                TaskSupervisor.DisposeInvalidTask();
            }
            catch (Exception ex)
            {
                throw;
            }
        }
        /// <summary>
        /// 开始分析
        /// </summary>
        public override async Task Action()
        {
            try
            {
                DownloadHelper downloadHelper = new DownloadHelper();
                while (!CancelTokenSource.IsCancellationRequested)
                {
                    TaskSupervisor.DisposeInvalidTask();

                    if (WaitDownLoadImageUrlQueue.Count < 1)
                    {
                        Progress("[图片下载器]图片队列为空...");
                        await Task.Delay(1000);

                        continue;
                    }

                    string imageUrl = Dequeue();
                    if (!ExistImageUrlList.Contains(imageUrl))
                    {
                        Task task   = new Task(() => { Progress("[图片下载器]正在下载图片URL:{0}\t保存路径为:{1}", imageUrl, downloadHelper.DownLoadImage(imageUrl, SaveFolder)); }, CancelTokenSource.Token);
                        bool result = TaskSupervisor.Add(task);
                        if (!result)
                        {
                            Progress("[图片下载器]下载队列已满,等待...", WaitDownLoadImageUrlQueue.Count);
                            await Task.Delay(1000);

                            WaitDownLoadImageUrlQueue.Enqueue(imageUrl);
                            continue;
                        }
                        ExistImageUrlList.Add(imageUrl);
                    }
                }

                TaskSupervisor.DisposeInvalidTask();
            }
            catch (Exception ex)
            {
                Progress("[图片下载器]发生异常:" + ex.ToString());
            }
        }