我在设计师中有progressBar1。 我有一个循环,我正在报告进度,但只有用户状态不是int。
while (index != -1)
{
string firstTag = "<div class=\"CatLinkContainer\">";
string endTag = "\" href";
index = forums.IndexOf(firstTag, index1);
if (index == -1)
continue;
var secondIndex = forums.IndexOf(endTag, index);
result = forums.Substring(index + firstTag.Length + 12, secondIndex - (index + firstTag.Length - 50));
if (result.Contains("forumPage"))
{
int index2 = result.IndexOf("\" href=\"http://www.tapuz.co.il/forums2008/forumPage.aspx?forum");
result = result.Remove(index2);
System.Threading.Thread.Sleep(1000);
countResults++;
backgroundWorker1.ReportProgress(0, result);
forumsNames.Add(result);
}
index1 = index + 1;
}
结果报告工作正常。 但现在我正在向progressBar1 0报告。 我想以某种方式计算进度,并向progressBar1报告百分比。
我添加了countResults变量int,我做了countResults ++;
例如在这种情况下有33个结果项目要报告问题是我如何计算所以它将达到100%? 在其他情况下,可以报告1个项目或122个。
在backgroundworker progresschanged事件中我做了:
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
toolStripStatusLabel1.Text = e.UserState.ToString();
toolStripProgressBar1.Value = e.ProgressPercentage;
}
UserState报告工作正常。 但是现在我如何计算报告ProgressPercentage?
答案 0 :(得分:1)
您报告进度百分比:
backgroundWorker1.ReportProgress(0, result);
这应该是0到100之间的百分比。为此,您必须知道还有多少工作要做。这意味着,在完成工作之前,您需要计算或估计需要完成的工作(包含您要查找的子字符串的字符串数量)。当您有一个数字时,您可以在循环中将当前计数除以估算值,并将该数字报告回ReportProgress
。