ich bin so verwirrt, weil dieser Code nicht funktioniert hat. Es hat die Datei erfolgreich heruntergeladen, meldet jedoch den Fortschritt nicht an ProgressBar
. Ich begann bereits Timer1
mit Timer1.Start()
vor BackgroundWorker2.RunWorkerAsync()
.Wie kann ich den Download-Fortschritt in der Fortschrittsleiste anzeigen? Visual Basic
Dim size As Double
Private Sub BackgroundWorker2_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker2.DoWork
Try
Dim G As Integer = 150
Dim Increase As Boolean = True
Do Until Clicked = True
If Increase = True Then
If Not G = 255 Then
G += 1
Threading.Thread.Sleep(10)
Else
Increase = False
End If
Else
If Not G = 150 Then
G -= 1
Threading.Thread.Sleep(10)
Else
Increase = True
End If
End If
Label6.ForeColor = Color.FromArgb(0, G, 0)
Loop
Label6.Cursor = Cursors.Default
Label6.Text = "Initializing"
Label6.ForeColor = Color.Lime
MessageBox.Show("Description :" & Environment.NewLine & Description & Environment.NewLine & Environment.NewLine & "Total Size: " & Environment.NewLine & TotalSize & Environment.NewLine & Environment.NewLine & "Download Link (Global): " & Environment.NewLine & DownlaodLink, "BIOS Update Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
'WebBrowser1.Navigate(DownlaodLink)
'BackgroundWorker1.RunWorkerAsync()
ProgressBar1.Visible = True
size = TotalSize.Replace(" MBytes", "")
Me.Refresh()
Dim wc As New WebClient
wc.DownloadFileAsync(New Uri(DownlaodLink), My.Computer.FileSystem.SpecialDirectories.Desktop & "\A55BM-E BIOS " & LatestVersion.ToString.Replace(" ", "") & ".zip")
Catch ex As Exception
MsgBox(ex.Message)
End Try
Und der Code mir den Fortschritt meines Download
Dim cursize As Double
Dim finsize As Double
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
If System.IO.File.Exists(My.Computer.FileSystem.SpecialDirectories.Desktop & "\A55BM-E BIOS " & LatestVersion.ToString.Replace(" ", "") & ".zip") Then
cursize = My.Computer.FileSystem.GetFileInfo(My.Computer.FileSystem.SpecialDirectories.Desktop & "\A55BM-E BIOS " & LatestVersion.ToString.Replace(" ", "") & ".zip").Length
finsize = cursize/size * 100
If Not ProgressBar1.Value = ProgressBar1.Maximum Then
ProgressBar1.Value = finsize
ProgressBar1.Refresh()
Else
ProgressBar1.Value = finsize
ProgressBar1.Refresh()
Timer1.Stop()
MsgBox("Finished Downloading")
End If
End If
End Sub
ich herausfinden kann, nicht zeigen, wie diese Arbeit zu machen. Kann mir jemand helfen?
Von MSDN: * Sie müssen darauf achten, keine Benutzeroberflächenobjekte in Ihrem DoWork-Ereignishandler zu bearbeiten. Stattdessen kommunizieren Sie über das ProgressChanged-Ereignis mit der Benutzeroberfläche. * Aktivieren Sie Option Strict und studieren Sie [dieses Beispiel] (https://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker .aspx) – Plutonix
Opps, vergaß das! Danke, dass du mich erinnert hast, lol! –
Vergessen Sie nicht, Ihre eigene Antwort zu akzeptieren, wenn es funktioniert hat. Es hilft zukünftigen Lesern, die funktionierende Antwort schneller zu identifizieren. Außerdem zeigt es der Community, dass diese Frage gelöst wurde und sie sich nicht bemühen müssen, das Problem zu lösen, und sie können sich auf nicht beantwortete Fragen konzentrieren. –