Async FileDownloader, который сравнивает файлы с хэш-кодами из списка - PullRequest
0 голосов
/ 29 октября 2019

Я хочу сделать лаунчер для моей игры. Модуль запуска должен выполнить проверку файлов, когда я нажимаю кнопку «Воспроизвести».

Я хочу проверить хэш-коды (например, файлы исправлений), которые уже установлены, и файлы исправлений на моем сервере. ,Файлы, которые я хочу проверить, должны находиться в списке файлов .txt.

Если код не совпадает с файлами на сервере, я хочу перезаписать локальные файлы.

После загрузки файла следующий должен начаться, пока все файлы не будут загружены. Я хочу показать прогресс с ProgressBar.

Я проверил это только с одним жестко закодированным файлом. С большим количеством файлов я не нашел решения.

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Try
        Dim URL As String = "http://213.196.154.200/downloads/WOTLK/WOTLK/Data/patch-3.MPQ"
        Application.DoEvents()
        hhtpclient.DownloadFileAsync(New Uri(URL), Pfad + "/data/patch-3.mpq", Stopwatch.StartNew)
        Application.DoEvents()
        Label2.Visible = True
        Label3.Visible = True
        ProgressBar1.Visible = True
        Button2.Visible = True
        Button1.Enabled = False
        Label5.Visible = False
    Catch ex As Exception
        MsgBox("Download fehlgeschlagen!" & vbNewLine & ex.ToString, MsgBoxStyle.Critical, "Error")
        End
    End Try
End Sub

Private Sub hhtpclient_DownloadFileCompleted(sender As Object, e As AsyncCompletedEventArgs) Handles hhtpclient.DownloadFileCompleted
    If Abbort = "0" Then
        Dim customMsgbox1 = New Form2("Download erfolgreich!")
        customMsgbox1.btnCustomNo.Visible = False
        customMsgbox1.btnCustomYes.Location = New Point(179, 229)
        customMsgbox1.ShowDialog()
        Label2.Visible = False
        Label3.Visible = False
        ProgressBar1.Visible = False
        Abbort = "0"
        PictureBox8.Visible = False
    Else
        Dim customMsgbox2 = New Form2("Download abgebrochen!")
        customMsgbox2.btnCustomNo.Visible = False
        customMsgbox2.btnCustomYes.Location = New Point(179, 229)
        customMsgbox2.ShowDialog()
        Label2.Visible = False
        Label3.Visible = False
        ProgressBar1.Visible = False
        Abbort = "0"
    End If
    Button2.Visible = False
    Button1.Enabled = True
    Label5.Visible = True
End Sub

Private Sub hhtpclient_DownloadProgressChanged(sender As Object, e As DownloadProgressChangedEventArgs) Handles hhtpclient.DownloadProgressChanged
    Dim SW As Stopwatch
    SW = Stopwatch.StartNew
    Me.ProgressBar1.Value = e.ProgressPercentage

    Dim totalbytes As Double = e.TotalBytesToReceive
    Dim bytes As Double = e.BytesReceived
    If totalbytes >= "1000000000" Then
        Label2.Text = Math.Round(bytes / 1024000000.0, 2) & " / " & Math.Round(totalbytes / 1024000000.0, 2) & " GB"
    ElseIf totalbytes >= "1000000" Then
        Label2.Text = Math.Round(bytes / 1024000.0, 2) & " / " & Math.Round(totalbytes / 1024000.0, 2) & " MB"
    End If

    If bytes >= "1000000" Then
        Label3.Text = (e.BytesReceived / 1024000.0 / (DirectCast(e.UserState, Stopwatch).ElapsedMilliseconds / 1000.0#)).ToString("0.0") & " MB/s"
    ElseIf bytes >= "1000" Then
        Label3.Text = (e.BytesReceived / 1024.0 / (DirectCast(e.UserState, Stopwatch).ElapsedMilliseconds / 1000.0#)).ToString("0.0") & " KB/s"
    End If
End Sub

Я попробовал этот код. Файлы будут загружаться, но я не знаю, как добавить ProgressBar и приложение зависнет при загрузке файлов:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    '===Downloadvorgang===
    Dim Einl() As String = Split(My.Computer.FileSystem.ReadAllText("D:/Test.txt"), vbNewLine)
    For i As Long = 0 To UBound(Einl)
        Dim l() As String = Split(Einl(i), ";")
        Dim url As String = l(0)
        Dim dateiname As String = l(1)
        My.Computer.Network.DownloadFile(url, "D:/" & dateiname, "", "", False, 100000, True)
    Next
    MsgBox("Die Dateien wurden erfolgreich heruntergeladen!", MsgBoxStyle.OkOnly, "Download beendet")
    '===Downloadvorgang Ende====
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...