Индикатор хода повторяется два или три раза, прежде чем завершить операцию на BackgroundWorkerReportProgress в BackgroundWorker
этот код:
Private Sub BackgroundWorker1_DoWork(sender As System.Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
'Load Data
For i As Integer = 0 To ListData.Count
BackgroundWorker1.ReportProgress((i/ListData.Count) * 100)
Next
If BackgroundWorker1.CancellationPending Then
e.Cancel = True
End If
End Sub
Private Sub BackgroundWorker1_ProgressChanged(sender As System.Object, e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
Me.ProgressBar1.Value = e.ProgressPercentage
End Sub
Private Sub BackgroundWorker1_RunWorkerCompleted(sender As System.Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
'set datasource of DatagridView
ProgressBar1.Style = ProgressBarStyle.Blocks
End Sub
В моей форме нагрузки
BackgroundWorker1.WorkerReportsProgress = True
BackgroundWorker1.WorkerSupportsCancellation = True
BackgroundWorker1.RunWorkerAsync()
ProgressBar1.Style = ProgressBarStyle.Marquee
Пожалуйста, помогите мне
Я предполагаю, что цикл 'For' должен идти от' 1' до 'ListData.Count'; в противном случае первая итерация указывает, что никакая работа не была выполнена ('100 * 0/ListData.Count' равно нулю). –
Dour, спасибо. mm какой стиль для progressbar положить на BackgroundWorker1_RunWorkerCompleted ?? – Wfgo
Хорошая оценка @ Карл, вопрос неоднозначен. Я изменил его, чтобы перейти от '0' к' ListData.Count-1'. –