I implemented a progress bar like this:
TableCreation.ProgressBar2.Value = 0
TableCreation.ProgressBar2.Maximum = CInt(FieldsNumber)
'==================
For SecondLoopCount = 1 To CInt(FieldsNumber) Step 1
'----------------------------------------------
TableCreation.ProgressBar2.Value = SecondLoopCount
TableCreation.ProgressBar2.Refresh()
TableCreation.ProgressBar2.Show()
' ....... Some Code ......
Next
And I handle the BackgroundWorker
’s DoWork
event in this sub:
Public Shared Sub bw_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs)
Dim bw As BackgroundWorker = New BackgroundWorker
Dim worker As BackgroundWorker = CType(sender, BackgroundWorker)
For i = 1 To 10
If worker.CancellationPending = True Then
e.Cancel = True
Exit For
Else
' Perform a time consuming operation and report progress.
System.Threading.Thread.Sleep(500)
worker.ReportProgress(i * 10)
End If
Next
End Sub
But when I do this:
Dim e1 As System.ComponentModel.DoWorkEventArgs
TableCreation.ProgressBar2.Value = SecondLoopCount
TableCreation.ProgressBar2.Refresh()
TableCreation.ProgressBar2.Show()
bw_DoWork(sender, e1)
Where sender
is an Object, it throws an error:
Unable to cast object of type 'e_store.TableCreation' to type 'System.ComponentModel.BackgroundWorker'.
TableCreation
is just a form in my project.