如何计算后台工作人员对progressBar的进度报告?

时间:2015-02-27 23:16:11

标签: c# .net winforms

我在设计师中有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?

1 个答案:

答案 0 :(得分:1)

您报告进度百分比:

 backgroundWorker1.ReportProgress(0, result);

这应该是0到100之间的百分比。为此,您必须知道还有多少工作要做。这意味着,在完成工作之前,您需要计算或估计需要完成的工作(包含您要查找的子字符串的字符串数量)。当您有一个数字时,您可以在循环中将当前计数除以估算值,并将该数字报告回ReportProgress