C# 在处理链接时,如何实时计算链接总数?
我有这个代码,它是一个函数,调用它自己的所有时间。 我正在使用backgroundworker,在backgroundworker Dowork事件中,我第一次通过单击按钮调用该函数来启动流程 在这个函数中,我有两个使用标签12和标签10文本属性的位置。 标签12表示坏链接,标签10表示好链接。机器人正在实时工作文本正在实时更改 在该函数中,我可以使用标签3文本将标签12和标签10相加,并显示链接总数 像这样:C# 在处理链接时,如何实时计算链接总数?,c#,C#,我有这个代码,它是一个函数,调用它自己的所有时间。 我正在使用backgroundworker,在backgroundworker Dowork事件中,我第一次通过单击按钮调用该函数来启动流程 在这个函数中,我有两个使用标签12和标签10文本属性的位置。 标签12表示坏链接,标签10表示好链接。机器人正在实时工作文本正在实时更改 在该函数中,我可以使用标签3文本将标签12和标签10相加,并显示链接总数 像这样: this.Invoke(new MethodInvoker(delegate { l
this.Invoke(new MethodInvoker(delegate { label3.Text = label12 + label10 }));
问题是:
private List<string> test(string url, int levels,DoWorkEventArgs eve)
{
HtmlWeb hw = new HtmlWeb();
List<string> webSites;
List<string> csFiles = new List<string>();
csFiles.Add("temp string to know that something is happening in level = " + levels.ToString());
csFiles.Add("current site name in this level is : " + url);
try
{
this.Invoke(new MethodInvoker(delegate { Texts(richTextBox1, "Loading The Url: " , Color.Red); }));
this.Invoke(new MethodInvoker(delegate { Texts(richTextBox1, url + "...",Color.Blue); }));
HtmlAgilityPack.HtmlDocument doc = TimeOut.getHtmlDocumentWebClient(url, false, "", 0, "", "");
this.Invoke(new MethodInvoker(delegate { Texts(richTextBox1, " Done " + Environment.NewLine, Color.Red); }));
currentCrawlingSite.Add(url);
webSites = getLinks(doc);
removeDupes(webSites);
removeDuplicates(webSites, currentCrawlingSite);
removeDuplicates(webSites, sitesToCrawl);
if (removeExt == true)
{
removeExternals(webSites);
}
if (downLoadImages == true)
{
webContent.retrieveImages(url); }
if (levels > 0)
sitesToCrawl.AddRange(webSites
this.Invoke(new MethodInvoker(delegate { label7.Text = sitesToCrawl.Count.ToString(); }));
this.Invoke(new MethodInvoker(delegate { label12.Text = currentCrawlingSite.Count.ToString(); }));
if (levels == 0)
{
return csFiles;
}
else
{
for (int i = 0; i < webSites.Count(); i++)//&& i < 20; i++)
{
string t = webSites[i];
if ((t.StartsWith("http://") == true) || (t.StartsWith("https://") == true)) // replace this with future FilterJunkLinks function
{
csFiles.AddRange(test(t, levels - 1, eve));
}
}
return csFiles;
}
}
catch
{
failedUrls++;
this.Invoke(new MethodInvoker(delegate { label10.Text = failedUrls.ToString(); }));
this.Invoke(new MethodInvoker(delegate { Texts(richTextBox1, " Failed " + Environment.NewLine, Color.Green); }));
return csFiles;
}
}
私有列表测试(字符串url、int级别、DoWorkEventArgs eve)
{
HtmlWeb hw=新的HtmlWeb();
列出网站;
List csFiles=新列表();
csFiles.Add(“临时字符串,以了解level=“+levels.ToString())中正在发生的事情”;
csFiles.Add(“此级别中的当前站点名称为:“+url”);
尝试
{
Invoke(新的MethodInvoker(委托{text(richTextBox1,“加载Url:”,Color.Red);});
Invoke(新的MethodInvoker(委托{text(richTextBox1,url+“…”,Color.Blue);});
HtmlAgilityPack.HtmlDocument doc=TimeOut.getHtmlDocumentWebClient(url,false,“,0,”,”);
Invoke(新的MethodInvoker(委托{text(richTextBox1,“Done”+Environment.NewLine,Color.Red);});
CurrentScrawlingSite.Add(url);
网站=获取链接(doc);
删除用户(网站);
移除的副本(网站、当前爬网站点);
移除的副本(网站、站点爬网);
如果(RemoveText==true)
{
移除外部(网站);
}
if(downLoadImages==true)
{
webContent.RetrieveImage(url);}
如果(级别>0)
sitesToCrawl.AddRange(网站
Invoke(新的MethodInvoker(委托{label7.Text=sitesToCrawl.Count.ToString();}));
Invoke(新的MethodInvoker(委托{label12.Text=CurrentScrawlingSite.Count.ToString();}));
如果(级别==0)
{
返回CSF文件;
}
其他的
{
对于(int i=0;i
要将字符串从标签
转换为数字,请使用以下命令:
int number = Int32.Parse(someLabel);
因此,您的代码应该是:
label3.Text = (Int32.Parse(label12.Text) + Int32.Parse(label10.Text)).ToString();
MatthewRz label3中的结果是:首先00,然后当一个标签上升1时,其10,然后20,然后30,然后40,然后50,60,70,80,90,然后100,然后当seocnd标签上升1时,其101,然后第一个标签再次上升1,其111,然后112,然后122 132。。。以此类推……有些东西的总和不太好。@DanielLip它应该起作用,当
label3
为101时,label12
和label10
的值是多少?例如,MatthewRz现在标签13为141,label12显示14,label10显示1,label13应该显示15。请在帖子中尝试代码,我编辑了它。它现在应该给出正确的结果。