我正在开发一个 Winform 程序,用户可以在其中下载大型 blob 文件。为了可视化进度,我在表单上添加了一个进度条。下载 blob 工作正常,但我不知道如何在下载过程中更新进度条。
这是我目前所拥有的......
Private Sub frmMeldingNieuweVersie_Load(sender As Object, e As EventArgs) Handles MyBase.Load
ProgressBar1.Minimum=0
ProgressBar1.Maximum=100
ProgressBar1.Value=10
BackgroundWorker1.RunWorkerAsync()
End Sub
Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Dim objReader As MySqlDataReader
Dim connectionString As String = ConfigurationManager.ConnectionStrings("MySqlConnectionString").ToString()
dim filename As String = "setup.exe"
dim setupFile As String
Dim strLatestVersion As String
Dim bytesLoad As Byte()
Try
myCmd.Connection = myConnection.Open
myCmd.CommandText = "SELECT setupFile, OCTET_LENGTH(SetupFile) AS FileSize FROM Versiebeheer ORDER BY Versienummer DESC LIMIT 1"
objReader = myCmd.ExecuteReader
While objReader.Read
'BackgroundWorker1.ReportProgress(e.percentProgress)
If objReader.HasRows Then
strLatestVersion = Replace(objReader("Versienummer"),".","")
If Not IsDBNull(objreader("setupFile")) then
bytesLoad = DirectCast(objReader("setupFile"), Byte())
setupFile = "C:\Temp\" & filename
End If
objReader.Close()
objReader = Nothing
End If
End While
myConnection.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
myConnection.Close()
End Try
End Sub
Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As Object, ByVal e As ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
Invoke(Sub()
Me.ProgressBar1.Value = 50'e.ProgressPercentage
End Sub)
End Sub
Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As Object, ByVal e As RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
'Close()
End Sub
是否可以为此问题制作进度条,还是我做错了什么?