我已经在网上挖掘了一段时间,没有找到可以帮助我解决问题的代码示例。我查看了示例代码,但我仍然没有“得到”它......
我已阅读,
http://msdn.microsoft.com/en-us/library/aa480507.aspx和
http://msdn.microsoft.com/en-us/library/dd781401.aspx
但我似乎无法让它工作..
我正在使用 HTMLAGILITYPACK
今天我最多提出 20 个网络请求,
请求完成后,结果被添加到字典中,然后一个方法搜索它的信息,如果发现代码退出,如果没有,它会发出另一个 webrequest,直到它达到 20。我需要能够异步退出所有线程找到所有内容后调用。
它是这样的
public void FetchAndParseAllPages()
{
PageFetcher fetcher = new PageFetcher();
for (int i = 0; i < _maxSearchDepth; i += _searchIncrement)
{
string keywordNsearch = _keyword + i;
ParseHtmldocuments(fetcher.GetWebpage(keywordNsearch));
//this checks if the information was found or not, if
//found stop exit and add to database
if (GetPostion() != 201)
{ //ADD DATA TO DATABASE
InsertRankingData(DocParser.GetSearchResults(), _theSearchedKeyword);
return;
}
}
}
这是在获取页面的类中
public HtmlDocument GetWebpage(string urlToParse)
{
System.Net.ServicePointManager.Expect100Continue = false;
HtmlWeb htmlweb = new HtmlWeb();
htmlweb.PreRequest = new HtmlAgilityPack.HtmlWeb.PreRequestHandler(OnPreRequest);
HtmlDocument htmldoc = htmlweb.Load(@"urlToParse", "38.69.197.71", 45623, "PORXYUSER", "PROXYPASSWORD");
return htmldoc;
}
public bool OnPreRequest(HttpWebRequest request)
{
// request.UserAgent = RandomUseragent();
request.KeepAlive = false;
request.Timeout = 100000;
request.ReadWriteTimeout = 1000000;
request.ProtocolVersion = HttpVersion.Version10;
return true; // ok, go on
}
我怎样才能使这个异步并通过线程使它变得非常快?或者我什至应该在异步执行时使用线程?