尝试异步下载Web内容

时间:2019-08-20 13:33:05

标签: c# .net http asynchronous

我正在尝试异步下载Web中的内容。

我使用自己的http客户端制作了类,并创建了我每个任务的对象。

任务异步运行,除http客户端外,其他所有功能都很完美。

我希望他们彼此完全独立。

但是,即使我使用Task.Factory.StartNew()方法运行它,每个http客户端对象的行为也就像它们在同步代码中运行一样。

如果一个班级要对链接进行阶段设置,则其他所有班级都在等待作业完成。

这是我的http助手类

    internal class LinkPharsingHelper
    {                        
        public string httpWebGET(string url, string Referer)
        {
            HttpWebRequest request;
            HttpWebResponse response;
            StreamReader readerPost;
            string resResult = string.Empty;
            Uri uri = new Uri(url);            
            request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "GET";
            request.Referer = Referer;
            request.UserAgent = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)";
            request.ContentType = "application/x-www-form-urlencoded";
            request.KeepAlive = true;
            request.AllowAutoRedirect = false;                                    
            return resResult;
        }
    ...
    }

和GetHttpContent方法使用它。

        for(int i = 0; i<urllist.Count; i++)
        {                
            int urlnum = i;
            string Th_RootPath = imagerootpath;
            Task.Factory.StartNew(((Action)(() =>
            {                    
                GetHttpContent(urllist[urlnum], Th_RootPath);//Do http content downloading jobs
                this.TotalProgressBar.BeginInvoke((Action)(() =>
                {
                    this.TotalProgressBar.Value++;
                }));
            })));            
        }

我希望我的http作业完全独立。

0 个答案:

没有答案