У меня есть progressBar1 в дизайнере. И у меня есть цикл, который я сообщаю о прогрессе, но только пользовательское состояние не int.Как вычислить отчет о ходе работы фонового рабочего на progressBar?
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?
Роберт я не понял. Я знаю, что в этом случае я знаю, что есть 33 строковых отчета. Итак, я сделал: countResults ++; backgroundWorker1.ReportProgress (countResults/33, result); но деление всегда возвращается 0. Так что это неправильно. –
Это другая проблема. Если работает с ints, 5/33 равно нулю. –