我正在尝试异步下载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作业完全独立。